在Python中搜索并替换文件中的一行我想循环一个文本文件的内容,并在一些行上进行搜索和替换,并将结果写回该文件。我可以先在内存中加载整个文件,然后将其写回去,但这可能不是最好的方法。在下面的代码中,最好的方法是什么?f = open(file)for line in f:
if line.contains('foo'):
newline = line.replace('foo', 'bar')
# how to write this newline back to the file
3 回答
![?](http://img1.sycdn.imooc.com/533e4d5b0001d57502200203-100-100.jpg)
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
import fileinputfor line in fileinput.input("test.txt", inplace=True): print "%d: %s" % (fileinput.filelineno(), line),
原始文件被移动到备份文件中。 标准输出重定向到循环中的原始文件。 因此任何 print
语句写入原始文件中。
fileinput
sys.args[1:]
with
fileinput
该文件不太大,您只需将其全部读入内存即可。然后关闭文件,以写入模式重新打开它,并将修改后的内容写回。 该文件太大,无法存储在内存中;您可以将其移到临时文件中,然后打开该文件,逐行读取该文件,然后将其写入原始文件。请注意,这需要两倍的存储。
![?](http://img1.sycdn.imooc.com/5333a01a0001ee5302000200-100-100.jpg)
浮云间
TA贡献1829条经验 获得超4个赞
import fileinputimport sysdef replaceAll(file,searchExp,replaceExp): for line in fileinput.input(file, inplace=1): if searchExp in line: line = line.replace(searchExp,replaceExp) sys.stdout.write(line)
replaceAll("/fooBar.txt","Hello\sWorld!$","Goodbye\sWorld.")
添加回答
举报
0/150
提交
取消