使用python从文件的特定部分复制到另一部分

时间:2015-02-04 16:27:49

标签: python file python-2.7 copy

我正在尝试将文件的特定部分复制到另一个文件。输入文件有四行,它们以相同的名字开头(给出的例子中为“1”)。我不确切地知道如何只能获取第一个“1”和第二个“1”之间的文件部分(超过100行......):

· · 1 · · · 1 · · · 1

我刚刚开始以下内容:

f_read = open(pathway, "r")
f_write = open(pathway, "w")
cnt = 0

with f_read as f1:
    for line in f1:
       if line.startswith("1"):
          cnt =+ 1
          if cnt == 2:
             break

这里我不知道如何指定我想要的文件部分(从第一个“1”到第二个“1”)...

有什么想法吗? 提前谢谢!!

2 个答案:

答案 0 :(得分:1)

基本上,

for line in in_file:
   if line.startswith('1'):
       break

for line in in_file:
   if line.startswith('1'):
       break
    <do stuff>

这使用python迭代器是有状态的事实,第二个循环从第一个循环开始,而不是从头开始。

答案 1 :(得分:0)

您应该使用with来打开这两个文件。在你的代码中,如果path实际上是同一个文件,你打开它后立即打开pathway进行读取,这样你基本上会尝试迭代一个空文件。您应该使用临时文件写入,然后根据需要更新原始文件。

with open(pathway) as f_read, open("temp_out.txt", "w") as f_write:
    for line in f_read:
         if line.startswith("1")
             for wanted_line in f_read:
                 # work on wanted lines
                 if wanted_line.startswith("1"):
                     break
with open("temp_out.txt", "w") as f_in, open(pathway, "w") as f_out:
    for line in f_in:
        f_out.write(line)