读入文件 - 更改内容 - 写出到同一文件

时间:2011-08-25 17:32:26

标签: python

我必须在文件中读取,在此处更改文本的各个部分,然后写出相同的文件。

目前我这样做:

f = open(file)
file_str = f.read() # read it in as a string, Not line by line
f.close()
#
# do_actions_on_file_str
#
f = open(file, 'w') # to clear the file
f.write(file_str)
f.close()

但我认为有更多的pythonic方法会产生相同的结果。

建议?

2 个答案:

答案 0 :(得分:22)

这看起来很简单,而且已经很清楚了。任何建议都取决于文件的大小。如果不是真的很大,看起来很好。如果真的很大,你可以处理大块。

但是你可以使用上下文管理器来避免显式关闭。

with open(filename) as f:
    file_str = f.read()

# do stuff with file_str

with open(filename, "w") as f:
    f.write(file_str)

答案 1 :(得分:4)

如果您逐行工作,可以使用fileinput与就地模式

import fileinput

for line in fileinput.input(mifile, inplace=1):
    print process(line)

如果您需要一次处理所有文本,那么可以使用负责关闭文件的with来优化您的代码:

with open(myfile) as f:
    file_str = f.read()
#
do_actions_on_file_str
#
with open(myfile, 'w') as f:
    f.write(file_str)