我需要将文件循环两次。第一次检查是否有一些关键词。 第二次根据之前的检查结果将一些信息附加到文件中。
我使用fileinput模块,因此我可以使用fileinput.lineno()
来决定添加我的信息的哪一行。
fileinput的典型用法是
import fileinput
for line in fileinput.input():
process(line)
所以我必须打开文件两次。
我的文件是这样的
#define XXX YYYY ------->at least one #define in my file
extern int AW_Function1(); --------> may have many AW functions or no AW functions
extern int AW_Function2();
extern int AW_Function3();
我的文件中有AW关键字或完全没有AW功能的函数。我需要用我的代码检查一下。
这就是我所拥有的
for line in fileinput.input('file1.txt'):
if '#define' in line: # there is at least one '#define' in that file
writePoint = fileinput.lineno() + 1
elif 'AW' in line:
writePoint = fileinput.lineno() + 1
for line in fileinput.input('file1.txt'):
if writePoint == fileinput.lineno() :
###generate a new line here
print new_line
print line,
由open
返回的文件对象不提供行号并且具有fseek
函数用于重新定位,而fileinput
模块具有行号但没有{ {1}}功能。
只打开一个文件,有更好的方法吗?