Python неожиданный EOF при разборе - PullRequest
1 голос
/ 22 июля 2011

Мой код:

def getAppHistory(self):
    path = self.APP_STORAGE + "\\history.dat"
    if os.path.exists(path):
        hist_file = open(path, "r")
        hist_data = hist_file.read()
    else:
        hist_file = open(path, "w")
        hist_data = "[200, \"Empty\", \"You have no device history!\", \"self.Void\"]"
        hist_file.write(hist_data)
    self.conn_menu.append(eval(hist_data))

Ошибка:

  File "C:\Users\Judge\Desktop\Lulz\Lulz.py", line 113, in getAppHistory
    self.conn_menu.append(eval(hist_data))
  File "<string>", line 0

   ^
SyntaxError: unexpected EOF while parsing

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

Это может произойти, если hist_file существует, но пуст

Вы должны напечатать hist_data, прежде чем пытаться его оценить, чтобы вы могли видеть наверняка

Также: убедитесь, что вы понимаете опасность использования eval

0 голосов
/ 22 июля 2011

Как объяснил gnibbler, это может произойти, если файл (в данном случае «history.dat») уже существует, но пуст.

Тест запустил его в Python v3 IDLE, используя:

import os
def getAppHistory():
    path = "C:/test/history.dat"
    if os.path.exists(path):
        hist_file = open(path, "r")
        hist_data = hist_file.read()
    else:
        hist_file = open(path, "w")
        hist_data = "[200, \"Empty\", \"You have no device history!\", \"self.Void\"]"
        hist_file.write(hist_data)
    print(eval(hist_data))
    hist_file.close()

Отлично пробежал с первого раза; однако, когда я вручную удалил строки и сделал файл пустым, он выдал ту же ошибку, что и вы. Опять же, как указал gnibbler, сначала посмотрите, какие недостатки и / или возможные недостатки "eval" имеют в вашем проекте / работе.

...