错误代码:
def load_stu(self):
try:
os.chdir('StudentManagerSystem')
f = open('student.data', 'r')
except:
f = open('student.data', 'w+')
# else:
finally:
data = f.read()
new_list = eval(data) # **** 不明白
self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
f.close()
报错提示:
in load_stu
new_list = eval(data) # **** 不明白
File "", line 0
SyntaxError: unexpected EOF while parsing
正确的方法:
def load_stu(self):
try:
os.chdir('StudentManagerSystem')
f = open('student.data', 'r')
except:
f = open('student.data', 'w+')
# else:
finally:
data = f.read()
new_list = eval(data) # **** 不明白
self.student_list = [Student(i['name'], i['gender'], i['tel']) for i in new_list]
f.close()
你两个代码一样啊
SyntaxError: unexpected EOF while parsing这个错误是因为eval(data)中的data是空字符串。
如果try:中出错,执行 except:中的 f = open('student.data', 'w+')会新建一个空文件
用data = f.read()读取空文件,data就是空字符串。
eval(data)是将data字符串中的内容作为一个python的表达式来执行。
所以这个data字符串的内容必须是一个合法的python表达式,不能是空字符串。