从 Abaqus 输入文件中提取信息
Pull Information from Abaqus Input File
我有一个 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))
也许你可以使用正则表达式....
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
我有一个 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))
也许你可以使用正则表达式....
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