2012-06-27 82 views
1

关于相关问题,我想知道如何将文本和/或行添加到Python中文件的开头,正如它的建议这对于文本/文件操作来说是一种更简单的语言。所以,当我问C++的以前的链接问题时,任何人都可以指出我如何用Python做到这一点?从链接(相关的)问题将文本和行添加到文件的开头(Python)

报价:

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

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

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


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

+5

见http://stackoverflow.com/questions/4454298/prepend-a-line-to-an-existing-file-in-蟒蛇 –

+0

我宁愿看到,已经做了一些努力,在通过stackoverflow搜索类似的问题以前问及为什么那里的答案不能满足您的问题。我们经常看到重复的问题。因为我们没有前进,所以这对SO或社区并不是好事。 – pyfunc

+0

@pyfunc,从这个系统这里,搜索功能超时。没有其他系统可以用于搜索。我已经把这个,我自己的问题作为Exact Dupe的近距离投票标记出来,并且已经在评论中张贴了这个链接,任何人都可以这样做。 (系统不会让我删除) –

回答

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”。

4

有很多类似的文件的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() 
相关问题