0

我正在尝试制作一个基本的登录程序,要求用户输入用户名和密码,并在日志文件中记录任何正确或错误的文本。我遇到的问题是,当我尝试使用超过 1 个用户名和密码组合时,会出现语法错误。

#login program
output = open("logfile.txt", 'a')
login = input("please enter the correct username and password\n")
a = "username password"
b = "username1 password1"

if a in login:
    print("successfully logged in")
    import time
    localtime = time.asctime(time.localtime(time.time()))
    output.write("Somebody successfully logged in at ")
    output.write(localtime)
    output.write("\n")
    output.close()
if b in login:
    print("successfully logged in")
    import time
    localtime = time.asctime(time.localtime(time.time()))
    output.write("Somebody successfully logged in at ")
    output.write(localtime)
    output.write("\n")
    output.close()

else:
    print("access denied.")
    import time
    output = open("logfile.txt", "a")
    localtime = time.asctime(time.localtime(time.time())
    output.write("Somebody unsuccessfully logged at ")
    output.write(localtime)
    output.write("\n")
    output.close()

错误:

  File "test.py", line 28
    output.write("Somebody unsuccessfully logged at ")
         ^
SyntaxError: invalid syntax
4

2 回答 2

7

您在else:块中缺少右括号:

output = open("logfile.txt", "a")
localtime = time.asctime(time.localtime(time.time())
                                  #-----------------^

这会导致 Python 在下一行报告语法错误。您需要做的就是添加缺少的一个);你有 3 个打开的括号,但只有 2 个关闭。

于 2013-09-19T21:42:15.983 回答
2

为了给 Martijn 的答案添加更多内容,python 解释器在括号内去除换行符。所以,python解释器,而不是看到

localtime = time.asctime(time.localtime(time.time()))
output.write("Somebody unsuccessfully logged at ")

(添加了正确的括号),解释器实际上看到

localtime = time.asctime(time.localtime(time.time()) output.write("Somebody unsuccessfully logged at ")

time.asctimeoutput.write("Somebody unsuccessfully logged at ")的另一个参数在哪里。这显然会引发有关无效语法的错误。我希望这能让您对正在发生的事情有更多的了解,以及为什么错误出现在您期望的位置之后的一行。

于 2013-09-19T22:19:05.133 回答