我想在我拥有的文本文件的中间插入一行。
我试过了:
for line in fileinput.input('file.txt', inplace=1):
if line.startswith('example'):
print 'input line'
哪个有效。但我希望这可以循环遍历许多文件,因此我将其更改为:
for line in fileinput.input('{0}' .format(file), inplace=1):
if line.startswith('example'):
print 'input line'
我收到错误消息:
Traceback (most recent call last):
File "addline.py", line 8, in <module>
for line in fileinput.input('{0}' .format(file), inplace=1):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py", line 253, in next
line = self.readline()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py", line 322, in readline
os.rename(self._filename, self._backupfilename)
OSError: [Errno 2] No such file or directory
我想知道为什么这不起作用,任何修复建议都会受到赞赏。
答案 0 :(得分:1)
问题似乎在于这一行:
for line in fileinput.input('{0}' .format(file), inplace=1):
改为:
# f is the filename
for line in fileinput.input('{0}'.format(f), inplace=1):
第一个问题,将file
更改为其他名称,file
是python中的保留名称。
并且,如果您尝试传递多个文件,请确保您传递list
个文件名。
尝试更改为:
...
files = ['file1', 'file2', ...] # put your files in a list first
# and pass the list of files to .input
for line in fileinput.input(files, inplace=1):
...