如何在具有不同位置的特定文本后删除文件的最后一部分?

时间:2017-12-07 07:47:52

标签: python if-statement

我有许多不同结构的文本文件。但是他们所有人都有相同的文字(' 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

1 个答案:

答案 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不会添加换行符。