如何在另一行之前插入特定行,到带有 python 的文本文件中,并且不在任何行之间插入任何空行?
how to insert an specific line before another line, into a text file with python and without inserting any empty lines between any lines?
我想从 Abaqus 输入文件中提取单元刚度矩阵。
文件最后几行的内容如下:
**
** OUTPUT REQUESTS
**
*Restart, write, frequency=0
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
*End Step
为了从输入文件中提取单元刚度矩阵,我们应该将以下行添加到输入文件中,即 ((*End Step)) 行之前的行:
*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER
我想通过 python 语言将这一行添加到我的输入文件中,这是 Abaqus 软件的脚本语言。
我尝试将以下代码添加到另一个文本文件以测试此代码,但是在执行这些行之后,在两行的每一行之间,它插入一个空行,我不想要这些空行:(在下面的代码中,我只想为了表明这一点,其他代码会创建空行)
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()
说明:
- 以读写模式打开文件。
- 创建临时变量
- 逐行迭代文件
- 如果找到以“*End Step”开头的行 - 将自定义行添加到临时变量
- 将迭代行添加到临时变量
- 转到文件开头
- 将临时变量写入其中
- 删除文件中的剩余行(不应存在,但以防万一它们不知何故未重复 - 删除它们)
我想从 Abaqus 输入文件中提取单元刚度矩阵。 文件最后几行的内容如下:
**
** OUTPUT REQUESTS
**
*Restart, write, frequency=0
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
*End Step
为了从输入文件中提取单元刚度矩阵,我们应该将以下行添加到输入文件中,即 ((*End Step)) 行之前的行:
*ELEMENT MATRIX OUTPUT,ELSET=m,STIFFNESS=YES,MASS=NO,OUTPUTFILE=USER
我想通过 python 语言将这一行添加到我的输入文件中,这是 Abaqus 软件的脚本语言。 我尝试将以下代码添加到另一个文本文件以测试此代码,但是在执行这些行之后,在两行的每一行之间,它插入一个空行,我不想要这些空行:(在下面的代码中,我只想为了表明这一点,其他代码会创建空行)
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()
说明:
- 以读写模式打开文件。
- 创建临时变量
- 逐行迭代文件
- 如果找到以“*End Step”开头的行 - 将自定义行添加到临时变量
- 将迭代行添加到临时变量
- 转到文件开头
- 将临时变量写入其中
- 删除文件中的剩余行(不应存在,但以防万一它们不知何故未重复 - 删除它们)