从Abaqus输入文件中提取信息

时间:2015-11-30 15:34:03

标签: python input abaqus

我有一个cae文件,模型中有许多不同的模型和步骤,我想快速从输入模型中拉出体热通量负载以检查它们。

有没有办法对输入文件中的内容进行编写,提取我正在寻找的负载,并将它们写入.txt文件进行检查?

下面是输入文件的一部分,其中包含我要捕获的信息。

** STEP: StepName
** LOADS
** 
** Name: Capsule   Type: Body heat flux
*Dflux, amplitude=Power
Capsule-1.Capsule, BF, 4685.4
** Name: Fuel   Type: Body heat flux
*Dflux
Fuel-1.Fuel, BF, 431422.
** Name: Rodlet   Type: Body heat flux
*Dflux, amplitude=Power
Rodlet-1.Rodlet, BF, 4659.5
** Name: Spacer   Type: Body heat flux
*Dflux, amplitude=Power
Spacer, BF, 7022.2

上面发布的我最初提出的问题已得到解答,但我想补充一点这个问题。我有多个输入文件,我希望这个脚本能够运行,并希望生成的输出文件在一行中列出inputfile,stepName,LoadName和Load all。这样我就可以复制并粘贴到Excel中(除非我可以将它输出到Excel然后它会节省我一步)并且能够对所有加载进行排序并知道它们属于哪个文件和步骤。

我尝试使用import glob,然后从目录中的所有输入文件中提取信息,但我不知道如何将信息写入输出文件。

import re
import os
import glob

# Open output file for writing
outputFile = open('ATF_Loads.txt','w')

inputfileList = glob.glob('./*.inp')

for inputfile in inputfileList:

    with open(inputfile, 'r') as inpDeck:
        lines = inpDeck.read()

    lines=re.findall(r"^\*Dflux(|,\s*amplitude=[^,]*?)\n([^,]*?),\s*BF\s*,([^,]*?\n)",lines, flags=re.IGNORECASE|re.MULTILINE)

    for line in lines:
        outputFile.write(','.join(line))

1 个答案:

答案 0 :(得分:0)

也许你可以使用正则表达式......

import re
import os

directory=r'C:\Users\Doug\Desktop'
fileName='sampleDeck'

file_fullPathName=os.path.join(directory, fileName + '.inp') 

with open(file_fullPathName, 'r') as inpDeck:
    lines = inpDeck.read()

lines=re.findall(r"^\*Dflux(|,\s*amplitude=[^,]*?)\n([^,]*?),\s*BF\s*,([^,]*?\n)",lines, flags=re.IGNORECASE|re.MULTILINE)

file_fullPathName=os.path.join(directory, fileName + '-out.txt') 
with open(file_fullPathName, "w") as outp:
    for line in lines:
        outp.write(','.join(line))  #Write text file