如何在另一行之前插入特定行,使用python将其插入到文本文件中,而不在任何行之间插入任何空行?
我想从Abaqus输入文件中提取单元刚度矩阵。 文件最后几行的内容如下:如何在另一行之前插入特定行,使用python将其插入到文本文件中,而不在任何行之间插入任何空行?,python,text,abaqus,Python,Text,Abaqus,我想从Abaqus输入文件中提取单元刚度矩阵。 文件最后几行的内容如下: ** ** OUTPUT REQUESTS ** *Restart, write, frequency=0 ** ** FIELD OUTPUT: F-Output-1 ** *Output, field, variable=PRESELECT *End Step 为了从输入文件中提取单元刚度矩阵,我们应在输入文件中插入以下行,即((*结束步骤))行之前的行: 我想通过python语言将这一行添加到我的输入文件中
**
** OUTPUT REQUESTS
**
*Restart, write, frequency=0
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
*End Step
为了从输入文件中提取单元刚度矩阵,我们应在输入文件中插入以下行,即((*结束步骤))行之前的行:
我想通过python语言将这一行添加到我的输入文件中,python语言是Abaqus软件的脚本语言。
我尝试在另一个文本文件中使用以下代码来测试此代码,但在执行这些行之后,在两行之间插入一个空行,我不希望这些空行:(在下面的代码中,我只想说明,其他代码创建空行)
此代码将完全满足您的需要:
with open('Input8.inp', 'r+') as f:
_text = ''
for line in f:
if line.startswith('*End Step'):
_text += '*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER\n'
_text += line
f.seek(0)
f.write(_text)
f.truncate()
说明:
亲爱的Yaroslav,我不使用行((*Output)),我上面提到的代码只是一个示例。我使用最后一行,即((*结束步骤))我想在((*结束步骤))行之前添加((*元素矩阵输出,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER))行。你能纠正一下你提到的代码吗?@Samanradnia,我已经逐行添加了代码解释,你真的不知道在哪里需要修改才能得到想要的结果吗?亲爱的Surzhikov,这很有效!非常感谢。
import fileinput
processing_foo1s = False
for line in fileinput.input('Input8.inp', inplace=1):
if line.startswith('*Output,'):
processing_foo1s = True
else:
if processing_foo1s:
print ('foo bar')
processing_foo1s = False
print (line,)
with open('Input8.inp', 'r+') as f:
_text = ''
for line in f:
if line.startswith('*End Step'):
_text += '*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER\n'
_text += line
f.seek(0)
f.write(_text)
f.truncate()