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

时间:2012-06-27 15:27:57

标签: python

关于相关问题,我想知道如何在Python的文件开头添加文本和/或行,因为它被建议是一种更简单的文本/文件操作语言。所以,当我问上一个关于C ++的链接问题时,有人能指出我如何用Python做到这一点吗?

引用链接(相关)问题:

  

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

     

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

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


  

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

2 个答案:

答案 0 :(得分:4)

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

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

  1. 首先,将新行写入文件
  2. 从旧文件中读取行并将其写入文件
  3. 如果,您可以保证添加到开头的每个新行都比开头的每个相应原始行长,您可以这样做:

    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()
    

答案 1 :(得分: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包含二进制内容,则应在其各自的打开调用中添加“rb”参数,并为第一次open()调用的flags参数添加“b”。