我的目的是从文件中读取行,在文件末尾去除空白并写回到同一文件中。我尝试了以下代码:
with open(filename, 'r+') as f:
for i in f:
f.write(i.rstrip()+"\n")
这似乎写在文件的末尾,使文件中的初始数据保持不变。我知道使用
f.seek(0)
会将指针带回到文件的开头,我认为这是解决方案所必需的。您能告诉我是否有其他方法可以解决此问题,或者我是否只需要在代码中添加更多逻辑就可以使用正确的补丁程序?
最佳答案
使用一个临时文件。 Python提供了用于以安全方式创建临时文件的工具。调用以下示例:python Modify.py target_filename
import tempfile
import sys
def modify_file(filename):
#Create temporary file read/write
t = tempfile.NamedTemporaryFile(mode="r+")
#Open input file read-only
i = open(filename, 'r')
#Copy input file to temporary file, modifying as we go
for line in i:
t.write(line.rstrip()+"\n")
i.close() #Close input file
t.seek(0) #Rewind temporary file to beginning
o = open(filename, "w") #Reopen input file writable
#Overwriting original file with temporary file contents
for line in t:
o.write(line)
t.close() #Close temporary file, will cause it to be deleted
if __name__ == "__main__":
modify_file(sys.argv[1])
此处引用:
http://docs.python.org/2/library/tempfile.html