2013-05-08 61 views
2

我想从一个文本文件向另一个文本文件插入大约4000行文本,但文本列表必须插入当前行之间,并在其上方和下方留下空行。使用Python在批处理文件中的某些行之间插入文本

例如output.txt的

old text 

new text 
new text 

old text 

所有的4000线是按以下格式:mydata /Alarm /Stop factor group1 cam.ad 线每周将增加,所以我不能指定只复制4000个的行数。

任何人都可以给我建议如何做到这一点?我尝试了一些脚本,但是我只能用指定的文本编辑行,所以当行数增加并且没有将它们保存在输出文件中时它不起作用。

我尝试了下面的脚本:

import fileinput 

for line in fileinput.input('input.txt', inplace=1): 
print line, 
if line.startswith('old text'): 
    print 'new text' 
+1

听起来像是一个伟大的sed应用程序,如果你在* nix。 – duffymo 2013-05-08 10:03:29

+0

@JLewis你可以展示你的尝试,你也想要插入行吗? – jamylak 2013-05-08 10:04:26

+0

@jamylak我想在21行之后和最后3行之前的行中插入行。 – 2013-05-08 10:12:27

回答

0

你必须去解决它使用接近这个算法: 这里我认为new是有要导入到old文本。

打开两个文件,原来的一个,以及一个临时tmp

  1. 读取的所有行组成的“老文”,并在tmp
  2. 插入newtexttmp
  3. 插入\ntmp
  4. 插入\ntmp
  5. 插入“旧文本”和tmp
  6. 以后的所有行复制tmp文件超过old文件

基本上,在蟒蛇会看起来像

with open('oldfile') as old: 
    with open('newfile') as new: 
     with open('tmpfile') as tmp: 
      … 

可悲的是,没有更多的情况下,我不能给你更好的答案。

相关问题