在 python 中使用 ast.literal_eval(open("filename").readlines()[0]) 出现语法错误

Syntax error using ast.literal_eval(open("filename").readlines()[0]) in python

当我尝试 运行 我的代码并从另一个文件导入数组时,我不断收到语法错误:

    Traceback (most recent call last):
  File "run.py", line 21, in <module>
    passwords = ast.literal_eval(open("passwords.txt").readlines()[0])
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    [‘test’]
     ^
SyntaxError: invalid syntax

片段 ['test'] 是外部文件 "passwords.txt" 的内容,但是让我感到困惑的是,在下面的代码中,如果我只包含前 2 个变量,代码 运行 非常好,但是当添加第二个时,它会抛出错误(所有变量中的文件内容也相同)

adjectives = ast.literal_eval(open("Adjectives.txt").readlines()[0])
nouns = ast.literal_eval(open("Nouns.txt").readlines()[0])
passwords = ast.literal_eval(open("passwords.txt").readlines()[0])
usernames = ast.literal_eval(open("usernames.txt").readlines()[0])

唯一的其他相关新代码是:

def WOPR():
    login = raw_input("Username: ")
    login_password = raw_input("Password: ")
    login_password = psudo_encrypt(login_password)
    for name in usernames:
        if name == login:
            for word in passwords:
                if word == login_password:
                    print("Greetings " + login)
                    play(true, login)
                else:
                    print("Incorrect Password \n-------Connection Terminated-------")
        elif login == "Joshua":
            print("Greetings Professor Falken \nWould you like to play a game?")
            play(true, "Professor")
        else:
            WOPR()

有人知道是什么原因造成的吗?我错过了一个非常明显的语法问题吗?提前致谢

[‘test’]
 ^    ^

我标记的两个字符是弯撇号 (‘’),而不是直撇号 (')。您可能通过从网站复制和粘贴代码,或者通过在不适合处理代码的文本编辑器中编辑代码来获得它们。

用普通的撇号替换这些字符。