Abaqus Python脚本按变量名打开多个odb文件
我有一个叫做 "odbList.txt" 的文本文件,里面写着几个 odb 文件的名字。
plate_2mm.odb
plate_4mm.odb
plate_6mm.odb
现在我写了一个 Python 脚本,想要在一个循环里打开这些文件。
# list of ODB-Files
odbList = [ ]
f = file( 'W:/someDirectory/odbList.txt' , 'r')
count = 0
for line in f.readlines() :
odbList.append (line)
count = count + 1
def getSIF(case, i):
odb = openOdb(path = 'W:/someDirectory/' + case)
# start analyses for each case
for i in xrange(0,count):
getSIF(odbList[i], i)
但是我遇到了一个错误提示:
OdbError: Cannot open file W:/someDirectory/plate_2mm.odb
. *** ERROR: No such file: W:/someDirectory/plate_2mm.odb
奇怪的是,当我直接写出完整的文件路径时,它却能正常工作。
还有一个奇怪的情况。如果我用这行代码:
odb = openOdb(path = case)
我又得到了一个错误提示:
OdbError: Cannot open file C:/Temp/plate_2mm.odb
. *** ERROR: No such file: C:/Temp/plate_2mm.odb
而且如果我把所有文件都放到 C:/Temp 这个文件夹里,一切都能正常运行。但为什么如果我用第一种方式或者在其他文件夹里就不行呢?尤其是当我直接写路径时,它却能正常工作。
2 个回答
0
你有没有试过把你的字符串写成原始字符串,像这样odb = openOdb(path = r'W:/someDirectory/' + case)
?或者使用操作系统的分隔符,像这样:odb = openOdb(path = 'W:someDirectory' + os.sep + case)
?
0
我打开文件的时候,通常会用下面的代码:
f=open(file_name,'r')
s=f.read().splitlines()
f.close()
while '' in s:
s.remove('')
这样做之后,变量s里就会有一个没有空行的列表。
另外,你也可以用下面这种方法:
import os
odbList=[]
for fileN in os.listdir("."):
if '.odb' in fileN:
odbList.append(fileN)
这个方法会在脚本所在的文件夹里找到所有名字里包含.odb的文件。