使用Python从一个文本文件复制到另一个文本文件

2024-06-26 13:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将某些文本行从一个文本文件复制到另一个文本文件。在我当前的脚本中,当我搜索一个字符串时,它会在之后复制所有内容,我如何才能只复制文本的某一部分?E、 g.只有当它包含“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()

Tags: 字符串in文本txt脚本closeifline
3条回答

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)

一行:

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) 

相关问题 更多 >