我正在尝试压缩一个非常大的日志文件,为此,我必须消除每一行中包含字符串"StatusRequest"和"StatusResponse"的内容,同时打印不包含这个字符串的其他行。我目前的代码如下(可在命令提示符下运行):
```python with open('logfile.txt', 'r') as infile, open('condensed_logfile.txt', 'w') as outfile: for line in infile: if 'StatusRequest' not in line and 'StatusResponse' not in line: outfile.write(line) ``` if (sys.argv[1])=="--help":
print ("\n")
print ("Argument 1: Enter name of '.py' file")
print ("-i or --input: name of Catalina log")
print ("-o or --output: file to output to")
print ("\n")
if (sys.argv[1])=="-h":
print ("\n")
print ("Argument 1: Enter name of '.py' file")
print ("-i or --input: name of Catalina log")
print ("-o or --output: file to output to")
print ("\n")
else:
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
Numarg = (len(sys.argv))
i=1
while i<=(Numarg-4):
search1="StatusRequest"
search2="StatusResponse"
if (sys.argv[Numarg-2])=="-o":
outputfile=sys.argv[Numarg-1]
if (sys.argv[Numarg-2])=="--output":
outputfile=sys.argv[Numarg-1]
if (sys.argv[i])=="-i":
filename=(sys.argv[i+1])
log=(filename)
print ("You entered the log: " + log)
f=open(log, 'r')
read_data = f.read()
f.close
f=open(log, 'r')
readlines_data=f.readlines()
f.close()
i=i+1
if (sys.argv[i])=="--input":
filename=(sys.argv[i+1])
log=(filename)
print ("You entered the log: " + log)
f=open(log, 'r')
read_data = f.read()
f.close
f=open(log, 'r')
readlines_data=f.readlines()
f.close()
i=i+1
for line in readlines_data:
if not ("StatusRequest" or "StatusResponse") in line:
result=line
print (line)
f=open(outputfile, 'a')
f.write(result + "\n")
f.close()
你只需要关注脚本的末尾来回答我的问题,我真的不确定为什么这不起作用......它仍然输出每一行。而且我已经尝试交换not的位置,以使成语上更有意义,但它并没有改变代码的任何内容。非常感谢您的帮助 :)