使用 python 从文件的特定部分复制到另一个文件
Copying from a specific part of a file to another with python
我正在尝试将文件的特定部分复制到另一个文件。输入文件有四行,它们以相同的名称开头(在给定的示例中为“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”)...
有什么想法吗?
提前致谢!!
基本上,
for line in in_file:
if line.startswith('1'):
break
for line in in_file:
if line.startswith('1'):
break
<do stuff>
这利用了 python 迭代器是有状态的这一事实,第二个循环从第一个循环停止的地方开始,而不是从头开始。
您应该使用 with 打开这两个文件。在您的代码中,如果路径实际上是同一个文件,您会立即打开 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)
我正在尝试将文件的特定部分复制到另一个文件。输入文件有四行,它们以相同的名称开头(在给定的示例中为“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”)...
有什么想法吗? 提前致谢!!
基本上,
for line in in_file:
if line.startswith('1'):
break
for line in in_file:
if line.startswith('1'):
break
<do stuff>
这利用了 python 迭代器是有状态的这一事实,第二个循环从第一个循环停止的地方开始,而不是从头开始。
您应该使用 with 打开这两个文件。在您的代码中,如果路径实际上是同一个文件,您会立即打开 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)