使用python复制文本文件中两个字符串之间的所有行

时间:2015-05-18 14:56:06

标签: python python-2.7

假设我有一个文本文件(input_file.txt,大小~10gb),内容如下 6月6日17:58:13其他字符串不是唯一的 6月6日17:58:13其他字符串不是唯一的 6月6日17:58:14其他字符串不是唯一的 6月6日17:58:14其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:17其他字符串不是唯一的 6月6日17:58:18其他字符串不是唯一的 6月6日17:58:19其他字符串不是唯一的 6月6日17:58:20其他字符串不是唯一的

现在我需要编写一个Python代码来读取文本文件,并将start和end之间的内容复制到另一个文件中。

我写了以下代码。

import re    
with open(r'C:\Python27\log\master_input.txt', 'r') as infile, open(r'C:\Python27\log\output.txt', 'w') as outfile:    
   copy = False    
   for line in infile:    
      if re.match("Jun  6 17:58:14(.*)", line):    
         copy = True    
      elif re.match("Jun  6 17:58:16(.*)", line):    
         copy = False
      elif copy:
         outfile.write(line)

我的代码输出:(注意:我没有按预期得到所需的输出)
6月6日17:58:14其他字符串不是唯一的 6月6日17:58:14其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的

预期输出为:
6月6日17:58:14其他字符串不是唯一的 6月6日17:58:14其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:15其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的 6月6日17:58:16其他字符串不是唯一的

请帮助我以最佳方式做到这一点......先谢谢。

1 个答案:

答案 0 :(得分:0)

不是Python,但每个自尊的开发人员都应该知道sed

$ cat data.txt 
foo
bar
baz
qux
quux
quuux

$ sed -n "2,4p" < data.txt
bar
baz
qux