0
當我嘗試運行我的代碼並從另一個文件中導入數組時,我不斷收到語法錯誤:在python中使用ast.literal_eval(open(「filename」)。readlines()[0])的語法錯誤
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()
任何任何想法可能是什麼原因造成這種情況?我錯過了一個非常明顯的語法問題嗎?在此先感謝
*文件內容也是相同的所有變量* ...你確定嗎?否則,這是不可能的:*如果我只包含前2個變量,代碼運行得很好*。請顯示內容,以便我們重現。 – Parfait
一般而言,您不應該試圖在一行代碼中塞滿太多東西。明智地使用變量來存儲中間結果。另外,'read()'一次返回一行。無需讀取整個文件。 –
@ Code-Apprentice感謝您的建議,我有所得到,但這不是什麼大事,它更多的是我爲自己做的一個概念證明,所以它不會超過10個字符串每個陣列都不會太大 – dbradley