这是我的文件 blah.log 的示例
Y:\TH2020-0600_1P00392G01_02\1P00392G01_02.obc[30-SEP-20 10:42:47
@30-SEP-20 10:42:51
yhjubad7
q28ed7qai
aiuwdh8
“30-SEP-20 10:43:06
@30-SEP-20 10:43:39 nkdjaw aibw
阿克乌德纳维克德
/30-SEP-20 10:43:52 @30-SEP-20 10:43:52 ahuwsd8
2dhaiubd 98wha98 "30-SEP-20 10:49:39
]30-SEP-20 11:29:03
Y:\TH2020-0600_1P00392G01_02\1P00392G01_02.obc[01-OCT-20 11:19:08]01-OCT-20 11:26:29
还有更多(如数千行)行,但我只是总结一下
我想删除以 '@' 开头并以 '/' 结尾的行段(最后其中一些是 '?' 或 '!' )。
这是我的代码
file = "cpcpk/1P00392G01_02.LOG"
newfile="cpcpk/New_1P00392G01_02.LOG"
new=open(newfile,'w')
with open(file) as input_data:
# loops through the whole file
for line in input_data:
# reset data
data=[]
if line.startswith('@'):
# Skips text before the beginning of the interesting block
for line in input_data:
if line.startswith('@'):
#write test log in a new file
data.append(line)
break
# Reads text until the end of the block:
for line in input_data:
if line.startswith('"'):
data.append(line)
new.writelines(data)
break
elif line.startswith('/'):
break
elif line.startswith('?'):
break
elif line.startswith('!'):
break
data.append(line)
new.close()
第一个问题
当我运行它时,它确实删除了它,但我想要的一些行也被删除了。
第二个问题
如果我这样编码,第一行和最后几行也不会写。
这是我想要的输出:
Y:\TH2020-0600_1P00392G01_02\1P00392G01_02.obc[30-SEP-20 10:42:47
@30-SEP-20 10:42:51
yhjubad7
q28ed7qai
aiuwdh8
“30-SEP-20 10:43:06 @30-SEP-20 10:43:52 ahuwsd8
2dhaiubd
98wha98
“30-SEP-20 10:49:39
]30-SEP-20 11:29:03
Y:\TH2020-0600_1P00392G01_02\1P00392G01_02.obc[01-OCT-20 11:19:08
我的意思是,@例如,如果行以 开头,@30-SEP-20 10:42:51 那么它将开始将行写入列表。然后,当 for 行循环时,循环到以 开头的行,"例如"30-SEP-20 10:43:06,它将停止循环,然后将列表写入新文件,但如果循环到以 开头的行,/例如/30-SEP-20 10:43:06它将停止循环并重置列表,然后重新开始。就像我编码的一样。你可以看到我有3个循环。第二个和第三个循环是找到我想要的和我不想要的。然后,第一个循环是重复第二个和第三个循环。