我正在使用Python,并且希望在不删除或复制文件的情况下将字符串插入到文本文件中。我该怎么做呢?
发布于 2008-09-24 06:57:22
不幸的是,没有办法在不重写文件的情况下插入到文件的中间。正如之前的帖子所指出的那样,你可以使用seek添加到一个文件中或覆盖它的一部分,但如果你想在开始或中间添加东西,你必须重写它。
这是操作系统的问题,不是Python的问题。这在所有语言中都是一样的。
我通常做的是从文件中读取,进行修改,并将其写出到一个名为myfile.txt.tmp或类似的新文件中。这比将整个文件读取到内存中要好,因为文件可能太大了。完成临时文件后,我将其重命名为与原始文件相同的名称。
这是一种很好的、安全的方法,因为如果文件写入由于任何原因而崩溃或中止,您仍然可以保留未被修改的原始文件。
发布于 2008-09-24 06:35:51
这取决于你想做什么。要追加,可以用“a”打开它:
with open("foo.txt", "a") as f:
f.write("new line\n")如果你想预先准备一些东西,你必须先从文件中读取:
with open("foo.txt", "r+") as f:
old = f.read() # read everything in the file
f.seek(0) # rewind
f.write("new line\n" + old) # write the new line before发布于 2008-09-24 18:27:46
就地重写文件通常是通过使用修改的名称保存旧副本来完成的。Unix的人会添加一个~来标记旧的。Windows用户可以做各种事情--添加.bak或.old --或者完全重命名文件,或者将~放在文件名的前面。
import shutil
shutil.move( afile, afile+"~" )
destination= open( aFile, "w" )
source= open( aFile+"~", "r" )
for line in source:
destination.write( line )
if <some condition>:
destination.write( >some additional line> + "\n" )
source.close()
destination.close()您可以使用以下代码来代替shutil。
import os
os.rename( aFile, aFile+"~" )https://stackoverflow.com/questions/125703
复制相似问题