Abaqus Python脚本按变量名打开多个odb文件

1 投票
2 回答
3689 浏览
提问于 2025-04-18 10:54

我有一个叫做 "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的文件。

撰写回答