1

我有一个 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

我在上面发布的最初问题得到了回答,但我想在这个问题上再补充一点。我有多个输入文件,我希望此脚本能够运行,并希望生成的输出文件在一行上列出输入文件、步骤名称、加载名称和全部加载。这样我就可以复制并粘贴到 Excel 中(除非我可以将它输出到 Excel 中,否则它会为我节省一个步骤)并且能够对所有负载进行排序并知道它们也属于哪个文件和步骤。

我尝试使用导入 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))
4

1 回答 1

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
于 2015-12-04T19:26:42.840 回答