-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それが、次のトランスクリプトのようなエラーの原因です。

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 。ステートメントがインデントされている回数が多すぎるようです。他のほとんどの場所で4 つを使用しているように見えるにもかかわらず、それと前の行の間には8 つのスペースの違いがあります。

インデントが非常に重要な言語では、特に注意する必要があります。

于 2012-12-04T07:50:12.837 に答える
0

if、else、elif、while、for、def、class などで始まるすべての行の末尾に「:」文字を配置する必要があります。さらに、 Python を作成する際はこの規則に従うことをお勧めします。

于 2012-12-04T07:58:06.143 に答える