我有许多不同结构的文本文件。但是他们所有人都有相同的文字(' TS 1234000')。我想在所有这些文件中删除TS 178000之后的文本,包括带有TS的行。
我写了一些东西,但它不起作用:
with open('file1.txt', 'r') as input1_dat_file, \
open('output.txt', 'w') as out:
f = input1_dat_file.readline()
if f.startswith('TS 1234000'):
print("I have found it")
sys.exit()
else:
out.writelines()
outpot文件中没有文字。
输入数据如下:
TS 8888
1
2
3
4
5 6
88
TS 1234000
2
3
8
9
56
答案 0 :(得分:2)
您似乎在寻找sed '/^TS 1234000/q'
,但这是在Python中重新实现它的快捷方式。
with open('file1.txt', 'r') as inputfile, open('output.txt', 'w') as out:
for line in inputfile:
if line.startswith('TS 1234000'):
break
#print("I have found it")
#sys.exit()
out.write(line)
一次只读取一行就可以避免将整个文件拉入内存,因此应该扩展到任意大的文件,逻辑似乎比你的尝试稍微简单。
不需要strip
换行符,因为write
不会添加换行符。