2

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

引用链接(相关)问题:

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

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

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


相关: 将文本和行添加到文件的开头 (C++)

4

2 回答 2

7

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

简而言之,您需要创建一个新文件

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

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

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()
于 2012-06-27T15:58:55.427 回答
0

像这样的东西应该工作:

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() 调用添加一个 'b' 到 flags 参数。

于 2012-06-27T15:37:17.987 回答