将文本和行添加到文件的开头(Python)

Posted

技术标签:

【中文标题】将文本和行添加到文件的开头(Python)【英文标题】:Adding text and lines to the beginning of a file (Python) 【发布时间】:2012-06-27 15:27:56 【问题描述】:

关于相关问题,我想知道如何在 Python 中将文本和/或行添加到文件的开头,因为有人建议这是一种更简单的文本/文件操作语言。所以,虽然我问了前面关于 C++ 的链接问题,但谁能指出我如何用 Python 做到这一点?

引用链接(相关)问题:

我希望能够在文件开头添加行。

我正在编写的这个程序将从用户那里获取信息,并准备 它写入文件。那么,该文件将是一个差异 已经生成了,添加到开头的是 使其与 Debian 的 DEP3 补丁兼容的描述符和标签 标记系统。

有人有任何建议或代码吗?


相关:Adding text and lines to the beginning of a file (C++)

【问题讨论】:

见***.com/questions/4454298/… 我希望看到在通过 *** 搜索之前提出的类似问题以及为什么那里的答案不能满足您的问题时已经做出了一些努力。我们经常看到重复的问题。这对 SO 或社区不利,因为我们没有前进。 @pyfunc,从本系统这里,搜索功能超时。没有其他系统可以用于搜索。我已经标记了这个,我自己的问题,对于已经在 cmets 中发布的链接,我将其作为 Exact Dupe 的密切投票,欢迎任何人这样做。 (系统不让我删除) 啊!下次再提。对此感到抱歉。 【参考方案1】:

最近有很多类似的文件I/O问题..

总之,你需要新建一个文件

    首先,将新行写入文件 从旧文件中读取行并将它们写入文件

如果您可以保证添加到开头的每一行新行都比开头对应的每一行原始行长,则可以原地执行:

f = open('file.txt','r+')
lines = f.readlines() # read old content
f.seek(0) # go back to the beginning of the file
f.write(new_content) # write new content at the beginning
for line in lines: # write old content after new
    f.write(line)
f.close()

上面的例子在寻找文件开头的位置后将所有数据全部写入,因为文件的内容被新内容覆盖了。

否则你需要写入一个新文件

f = open('file.txt','r')
newf = open('newfile.txt','w')
lines = f.readlines() # read old content
newf.write(new_content) # write new content at the beginning
for line in lines: # write old content after new
    newf.write(line)
newf.close()
f.close()

【讨论】:

【参考方案2】:

这样的事情应该可以工作:

with open('new.txt', 'w') as new:
    with open('prefix.txt') as prefix:
        new.write(prefix.read())
    with open('old.txt') as old:
        new.write(old.read())

如果 old.txt 或 prefix.txt 包含二进制内容,您应该在它们各自的 open 调用中添加一个 'rb' 参数,并在第一个 open() 调用的 flags 参数中添加一个 'b'。

【讨论】:

以上是关于将文本和行添加到文件的开头(Python)的主要内容,如果未能解决你的问题,请参考以下文章

如何将序数添加到文本文件中每一行的开头

将文本添加到 Object 属性值的开头

如何将默认文本添加到 html 文本区域的开头?

Python:匹配带有特殊字符和空格的长字符串,然后在开头添加两个字符

python -- 文件处理

如何在文本文件中的每一行的开头添加序号