Abaqus Python脚本用变量名打开几个odb文件

时间:2014-06-24 13:56:24

标签: python

我有一个名为“odbList.txt”的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 :(得分:0)

您是否尝试输入字符串作为原始字符串,例如odb = openOdb(path = r'W:/someDirectory/' + case)或使用os.sep字符,如下所示:odb = openOdb(path = 'W:someDirectory' + os.sep + case)

答案 1 :(得分:0)

我打开文件的大部分时间都使用以下内容:

f=open(file_name,'r') s=f.read().splitlines() f.close() while '' in s: s.remove('')

现在,您将拥有一个没有输入的列表。

或者你也可以使用像

这样的东西

import os odbList=[] for fileN in os.listdir("."): if '.odb' in fileN: odbList.append(fileN)

这将在脚本的目录/工作目录中找到名称中包含.odb的所有文件