Python 使用fileinput.input在文件中插入一行

Python 使用fileinput.input在文件中插入一行,python,Python,我想在我拥有的文本文件中间插入一行 我试过: 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.startswit

我想在我拥有的文本文件中间插入一行

我试过:

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
回溯(最近一次呼叫最后一次):
文件“addline.py”,第8行,在
对于fileinput.input(“{0}.”格式(文件),inplace=1中的行:
文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py”,下一页第253行
line=self.readline()
readline中的文件“/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/fileinput.py”,第322行
重命名(self.\u文件名,self.\u备份文件名)
OSError:[Errno 2]没有这样的文件或目录

我想知道为什么这不起作用,如果您有任何修改建议,我将不胜感激。

问题似乎出在这一行:

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中的保留名称

如果您试图传递多个文件,请确保您正在传递文件名的
列表

尝试更改为:

...
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):
...

您的问题似乎是
文件
不存在,错误显示了这一点。什么是
文件
?那是文件名还是目录?它是文件夹中的文件。但是当我更改{0}作为实际文件名时,它就可以工作了。我认为将{0}与fileinput.input一起使用肯定有问题。我会再次检查所有内容。问题是
file
在Python中是一个保留名称,请尝试使用其他名称,如f,您应该fine@user1551817,这很好,我很高兴它能帮上忙:)格式(字符串)
和仅仅
字符串
有什么不同吗?或者,如果传递给
格式
的对象不是字符串,则可能是
str(thing)
。@tripleee,你是对的,在这种情况下它有点多余,但OP遇到的问题不是字符串格式,而是文件根本不存在。但你的观点是正确的。