首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修改文本文件?

如何修改文本文件?
EN

Stack Overflow用户
提问于 2008-09-24 14:30:57
回答 6查看 459.1K关注 0票数 203

我正在使用Python,并且希望在不删除或复制文件的情况下将字符串插入到文本文件中。我该怎么做呢?

EN

回答 6

Stack Overflow用户

发布于 2008-09-24 06:57:22

不幸的是,没有办法在不重写文件的情况下插入到文件的中间。正如之前的帖子所指出的那样,你可以使用seek添加到一个文件中或覆盖它的一部分,但如果你想在开始或中间添加东西,你必须重写它。

这是操作系统的问题,不是Python的问题。这在所有语言中都是一样的。

我通常做的是从文件中读取,进行修改,并将其写出到一个名为myfile.txt.tmp或类似的新文件中。这比将整个文件读取到内存中要好,因为文件可能太大了。完成临时文件后,我将其重命名为与原始文件相同的名称。

这是一种很好的、安全的方法,因为如果文件写入由于任何原因而崩溃或中止,您仍然可以保留未被修改的原始文件。

票数 146
EN

Stack Overflow用户

发布于 2008-09-24 06:35:51

这取决于你想做什么。要追加,可以用“a”打开它:

代码语言:javascript
复制
 with open("foo.txt", "a") as f:
     f.write("new line\n")

如果你想预先准备一些东西,你必须先从文件中读取:

代码语言:javascript
复制
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
票数 123
EN

Stack Overflow用户

发布于 2008-09-24 18:27:46

就地重写文件通常是通过使用修改的名称保存旧副本来完成的。Unix的人会添加一个~来标记旧的。Windows用户可以做各种事情--添加.bak或.old --或者完全重命名文件,或者将~放在文件名的前面。

代码语言:javascript
复制
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

代码语言:javascript
复制
import os
os.rename( aFile, aFile+"~" )
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/125703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档