Python的if语句中出现语法错误

Python的if语句中出现语法错误,python,if-statement,python-3.x,syntax-error,Python,If Statement,Python 3.x,Syntax Error,由于某种原因,我在这个函数上得到了一个语法错误 def log(user, successful): if successful == True: with open('userlog.txt', 'a') as logfile: logfile.append(datetime.datetime + ' User ' + user + ' Logged in' else: with open('userlog.txt', 'a') as logfile:

由于某种原因,我在这个函数上得到了一个语法错误

def log(user, successful):
if successful == True:
    with open('userlog.txt', 'a') as logfile:
        logfile.append(datetime.datetime + ' User ' + user + ' Logged in'
else:
    with open('userlog.txt', 'a') as logfile:
        logfile.append(datetime.datetime + ' Unsuccessful login attempt as ' + user) )
这里是错误

    Traceback (most recent call last):
  File "C:\conf.py", line 4, in <module>
    import func
  File "C:\func.py", line 48
    else:
       ^
SyntaxError: invalid syntax
回溯(最近一次呼叫最后一次):
文件“C:\conf.py”,第4行,在
导入函数
文件“C:\func.py”,第48行
其他:
^
SyntaxError:无效语法

现在,我看到其他帖子说,当这种情况发生时,我应该添加一个额外的括号。我试过了,但没用。提前感谢。

看起来您复制/粘贴了一些错误的代码。此行需要一个右括号:

logfile.append(datetime.datetime + ' User ' + user + ' Logged in'
#                                                                ^
logfile.append(datetime.datetime + ' Unsuccessful login attempt as ' + user) )
#                                                                            ^
这个有一个额外的右括号:

logfile.append(datetime.datetime + ' User ' + user + ' Logged in'
#                                                                ^
logfile.append(datetime.datetime + ' Unsuccessful login attempt as ' + user) )
#                                                                            ^
只需将额外的括号从第二行移到第一行,一切都会好起来


事实上,你还有一个问题。正如@MartijnPieters在评论中所说的,您不能用字符串连接
datetime.datetime
对象

我想你实际上是想:

logfile.append(str(datetime.datetime.now()) + ' Unsuccessful login attempt as ' + user)
这将以字符串形式返回当前时间,然后可以将其与其他字符串连接:

>>> import datetime
>>> str(datetime.datetime.now())
'2014-12-15 13:03:49.242187'
>>>

您发布的代码中的空白已被破坏。你能修复它吗?它看起来像缩进错误,因为if和elseYou没有关闭上一个括号line@Andy:你赢了!我刚想说代码中的缩进很好,我刚发布并修复它就看到了。我现在觉得自己很笨。
datetime.datetime
对象也不会那么容易连接到字符串。它也应该被调用,而不仅仅是引用。对,我错过了。谢谢