首页 > 解决方案 > Python 3,eval,SyntaxError:解析时出现意外 EOF

问题描述

我正在测试代码示例,但不断收到错误消息

# interactive updates
import shelve
from person import Person
fieldnames = ('name', 'age', 'job', 'pay')

db = shelve.open('class-shelve')
while True:
    key = input('\nKey? => ')
    if not key: break
    if key in db:
        record = db[key]                      # update existing record
    else:                                     # or make/store new rec
        record = Person(name='?', age='?')    # eval: quote strings
    for field in fieldnames:
        currval = getattr(record, field)
        newtext = input('\t[%s]=%s\n\t\tnew?=>' % (field, currval))
        if newtext:
            #print('Blah Blah' + newtext)
            setattr(record, field, eval(newtext))
            #setattr(record, field, 'Testing')
        db[key] = record
db.close()

使用 eval 函数时尝试使用 setattr 更新记录时出现此错误。

SyntaxError: unexpected EOF while parsing

问题似乎是 eval 部分,我知道 eval 的安全问题,但在这里我试图让一个示例正常工作。Person 类非常简单,有 4 个字段用于存储值。

标签: python-3.xeval

解决方案


您必须明确引用字符串输入,正如书中所写。

例如:新的?=>'卢卡斯'


推荐阅读