[英]Copying from one text file to another using Python
我想将某些文本行从一个文本文件复制到另一个文本文件。 在我当前的脚本中,当我搜索一个字符串时,它会在之后复制所有内容,如何仅复制文本的特定部分? 例如,只有在其中包含“tests/file/myword”时才复制行?
当前代码:
#!/usr/bin/env python
f = open('list1.txt')
f1 = open('output.txt', 'a')
doIHaveToCopyTheLine=False
for line in f.readlines():
if 'tests/file/myword' in line:
doIHaveToCopyTheLine=True
if doIHaveToCopyTheLine:
f1.write(line)
f1.close()
f.close()
单线:
open("out1.txt", "w").writelines([l for l in open("in.txt").readlines() if "tests/file/myword" in l])
推荐with
:
with open("in.txt") as f:
lines = f.readlines()
lines = [l for l in lines if "ROW" in l]
with open("out.txt", "w") as f1:
f1.writelines(lines)
使用更少的内存:
with open("in.txt") as f:
with open("out.txt", "w") as f1:
for line in f:
if "ROW" in line:
f1.write(line)
readlines() 将整个输入文件读入一个列表,性能不佳。 只需遍历文件中的行。 我在 output.txt 上使用了“with”,这样它在完成后会自动关闭。 'list1.txt' 不需要它,因为它会在 for 循环结束时关闭。
#!/usr/bin/env python
with open('output.txt', 'a') as f1:
for line in open('list1.txt'):
if 'tests/file/myword' in line:
f1.write(line)
只是一个稍微清理一下的方法。 这与 ATOzTOA 的答案的性能差不多,但没有理由将两个单独的语句分开。
with open(path_1, 'a') as file_1, open(path_2, 'r') as file_2:
for line in file_2:
if 'tests/file/myword' in line:
file_1.write(line)
安全省内存:
with open("out1.txt", "w") as fw, open("in.txt","r") as fr:
fw.writelines(l for l in fr if "tests/file/myword" in l)
它不会创建临时列表( readline
和[]
会做什么,如果文件很大,这将是一个非启动器),所有这些都是通过生成器理解完成的,并且使用with
块确保文件在退出时关闭。
f=open('list1.txt')
f1=open('output.txt','a')
for x in f.readlines():
f1.write(x)
f.close()
f1.close()
这将 100% 有效 尝试一次
在带有括号的上下文管理器的Python 3.10
中,您可以在一个 with 块中使用多个上下文管理器:
with (open('list1.txt', 'w') as fout, open('output.txt') as fin):
fout.write(fin.read())
以open(“ list1.txt”)作为f:doIHaveToCopyTheLine = False'''以写模式打开输出文件''以open(“ output.txt”,'w')作为f1:'''逐行迭代'''代表f中的行:如果'tests / file / myword'位于该行中:doIHaveToCopyTheLine = True elif doIHaveToCopyTheLine:f1.write(line)
f1.close()f.close()
我想将某些文本行从一个文本文件复制到另一个文本文件。 在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分? 例如,仅在其中包含“ tests / file / myword”的情况下才复制行?
当前代码:
#!/usr/bin/env python
f = open('list1.txt')
f1 = open('output.txt', 'a')
doIHaveToCopyTheLine=False
for line in f.readlines():
if 'tests/file/myword' in line:
doIHaveToCopyTheLine=True
if doIHaveToCopyTheLine:
f1.write(line)
f1.close()
f.close()
f = open('list1.txt')
f1 = open('output.txt', 'a')
# doIHaveToCopyTheLine=False
for line in f.readlines():
if 'tests/file/myword' in line:
f1.write(line)
f1.close()
f.close()
现在您的代码将起作用。 试试这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.