如果文件行中包含两个字符串

时间:2017-01-11 09:58:33

标签: python if-statement

我是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部分。 我究竟做错了什么? 提前干杯

1 个答案:

答案 0 :(得分:1)

改变这个:

if 'FROM' and '@somedomain.local' in line:

对此:

if 'FROM' in line or '@somedomain.local' in line:

我假设您要查找包含 其中一个的行。

如果您实际上正在寻找包含两者的行,请将or更改为and