全局变量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')
有更有效的方法吗?感谢
答案 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)