我必须使用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
答案 0 :(得分:3)
使用
from os import *
您正在导入全局命名空间中的所有os
内容,包括os.open()
。不要这样做。
当您提供单字符字符串r
时,第二个参数 flags 被定义为整数常量。这基本上是DSM was telling you和Lattyware said。
open()
显然是不同的:
注意:此功能适用于低级I / O.对于正常使用, 使用内置函数open(),它返回一个“文件对象” read()和write()方法(以及更多)。包装文件描述符 在“文件对象”中,使用fdopen()。