在Python中打开txt文件时出错

时间:2013-05-06 16:21:15

标签: python

我必须使用txt文件,为此我使用了以下代码:

inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE

但是,当我在特定应用程序中运行此行以运行另一个程序中可用的python脚本时,我收到此错误。当我在Spyder中运行它时,我没有收到任何错误。

TypeError: an integer is required

我不知道为什么会出现这种错误....

编辑: 直到有问题的代码行

import os
from os import *
from abaqus import *
from odbAccess import *
from abaqusConstants import *
import time
import itertools

os.chdir('C:\\Abaqus_JOBS')

LCKf = 'C:\\Abaqus_JOBS\\Job-M1-3_2.lck'
STAf = 'C:\\Abaqus_JOBS\\Job-M1-3_2.sta'

def get_num_part(s):
    for i in xrange(len(s)):
        if s[i:].isdigit():
            return s[i:]
    return ''

if not path.exists(LCKf):
    time.sleep(1)
while path.exists(LCKf) and path.isfile(LCKf) and access(LCKf, R_OK):
    variableX = 0
else:
    odb = openOdb(path='Job-M1-3_2.odb')
#get CF
#session.odbs[name].steps[name].frames[i].FieldOutput
    myAssembly = odb.rootAssembly    
    myAssemblyName = odb.rootAssembly.name

    nsteps=len(odb.steps.values())

    step1 = odb.steps.values()[nsteps-1]
    step1Name = odb.steps.values()[nsteps-1].name

    myInstanceName = odb.rootAssembly.instances.values()[0].name

    dCF3=[]
    dCF3v=[]
    coordFv=[]
    fileData = [] #array with the input file
    nodes = [] #array with the content of *NODES

    inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE
    #fileData = variable with all the lines of the inp file
    for line in inputFile:
        fileData.append([x.strip() for x in line.split(',')])

错误是:

Traceback (most recent call last):
  File "c:/Abaqus_JOBS/results.py", line 47, in <module>
    inputFile = open("C:/Abaqus_JOBS/Job-M1-3_4.inp", "r") #CAE INPUT FILE
TypeError: an integer is required

1 个答案:

答案 0 :(得分:3)

使用

from os import *

您正在导入全局命名空间中的所有os内容,包括os.open()。不要这样做。

当您提供单字符字符串r时,第二个参数 flags 被定义为整数常量。这基本上是DSM was telling youLattyware said

默认情况下,在全局命名空间中包含在Python中的

open()显然是不同的:

  

注意:此功能适用于低级I / O.对于正常使用,   使用内置函数open(),它返回一个“文件对象”   read()和write()方法(以及更多)。包装文件描述符   在“文件对象”中,使用fdopen()。