我是Python的新手,所以请耐心等待,如果这个主题已被涵盖,请提前道歉:)
我正在编写脚本以检查来自某个域的SMTP日志列表。我想忽略包含SMTP会话其他部分的任何行,例如DATA或RCPT等......
这是脚本:
import os
files = os.listdir('t:\smtpsvc1')
path = "t:\smtpsvc1" # I have used this variable as os.path.join wouldn't accept the variable 'files'
for f in files:
fullpath = os.path.join(path,f)
print(fullpath)
searchfile = open(fullpath, "r")
for line in searchfile:
if ('FROM' and '@somedomain.local' in line):
print (line)
searchfile.close()
脚本运行,打印第一个文件的名称,然后检查行并输出如下数据:
2016-09-28 09:31:50 192.168.106.28 APPSERVER SMTPSVC1 SMTPSERVER 192.168.106.124 0 DATA - + 250 0 139 612 47 SMTP - - - -
这似乎触发了查找@ somedomain.local的条件,但似乎忽略了if语句的FROM部分。 我究竟做错了什么? 提前干杯
答案 0 :(得分:1)
改变这个:
if 'FROM' and '@somedomain.local' in line:
对此:
if 'FROM' in line or '@somedomain.local' in line:
我假设您要查找包含 其中一个的行。
如果您实际上正在寻找包含两者的行,请将or
更改为and
。