在Python中删除存储在变量中的行

时间:2016-03-27 10:18:33

标签: python delete-file

全局变量originalInfo包含

Joe;Bloggs;j.bloggs@anemail.com;0715491874;1

我编写了一个函数来删除包含更多此类信息的文本文件中的该行。它有效,但它非常笨重而且不够优雅。

    f = open("input.txt",'r') # Input file
    t = open("output.txt", 'w') #Temp output file

    for line in f:
        if line != originalInfo: 
            t.write(line) 

    f.close()
    t.close()
    os.remove("input.txt")
    os.rename('output.txt', 'input.txt')

有更有效的方法吗?感谢

2 个答案:

答案 0 :(得分:0)

你的解决方案几乎可行,但你需要处理尾随的换行符。这是一个较短的版本,做你想要的:

import shutil

with open("input.txt",'r') as fin, open("output.txt", 'w') as fout:
    for line in fin:
        if line.strip() != originalInfo: 
            fout.write(line) 
shutil.move('output.txt', 'input.txt')

strip()需要额外的努力,但会消除额外的空白区域。 或者,您可以这样做:

originalInfo += '\n'

以后循环:

if line != originalInfo: 

答案 1 :(得分:0)

您可以打开文件,通过readlines()阅读,关闭它并打开它再写一次。通过这种方式,您不必创建输出文件:

with open('input.txt') as file:
    lines = file.readlines

with open('input.txt') as file:
    for line in lines:
        if line != originalInfo:
            file.write(line)

但是如果你想要一个输出:

with open('input.txt') as input:
    with open('output.txt', 'w') as output:
        for line in input:
            if line != originalInfo:
                output.write(line)