-2

我刚开始学python,代码有一些错误,无法运行。所以你能帮我解决这个问题吗?表明

File "ex2.py", line 21
if isRobotRecord(line)
                     ^
SyntaxError: invalid syntax

ex2.py

import time
robot_emails = ["googlebot@google.com"]
robot_emails.append("66.249.74.228")
robot_emails.append("61.147.110.22")
robot_emails.append("61.147.110.21")
robot_emails.append("61.147.112.231")
f = open("/opt/CLiMB/Storage1/log/vsftp.log")
def isRobotRecord(line):
    for email in robot_emails:
            if email in line.split("Client")[1]:
                    return False
    return True
def OnlyRecent(line):
    if  time.strptime(line.split("[")[0].strip(),"%a %b %d %H:%M:%S %Y")> time.gmtime(time.time()-(60*60*24*7)):
        return True
    return False
filename= time.strftime('%Y%m%d')+'.log'
f1= open(filename,'w')
for line in f:
    if OnlyRecent(line):
            if isRobotRecord(line)
                    print line
                    f1.write(line)
f.close()
f1.close()
4

3 回答 3

0

您在该行的末尾缺少一个冒号:

if isRobotRecord(line):
于 2012-12-04T07:49:29.833 回答
0

至少,您需要:在该if语句的末尾添加 a。这就是导致您的错误的原因,类似于以下成绩单:

pax> cat good.py 
for plugh in (1,2,3):
    print plugh

pax> python good.py 
1
2
3

pax> cat bad.py 
for plugh in (1,2,3)
    print plugh

pax> python bad.py 
  File "bad.py", line 1
    for plugh in (1,2,3)
                       ^
SyntaxError: invalid syntax

您可能还想查看您的缩进 - 看起来该if 语句可能缩进了太多次。尽管您似乎在其他地方最多使用了四个,但它与上一行之间有八个空格差异。

在缩进如此重要的语言中,您必须特别小心。

于 2012-12-04T07:50:12.837 回答
0

您需要在以 if、else、elif、while、for、def、class 等开头的每行末尾加上 ':' 字符。此外,我建议您在编写 python 时尝试遵守此规则

于 2012-12-04T07:58:06.143 回答