我必须在文件中读取,在此处更改文本的各个部分,然后写出相同的文件。
目前我这样做:
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方法会产生相同的结果。
建议?
答案 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)