Python 3,eval,SyntaxError:解析时出现意外的EOF。

问题描述 投票:1回答:1

我正在测试一个代码示例,但一直收到一个错误信息

# 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.x eval
1个回答
0
投票

你必须 引用 字符串输入显式,书上是这样写的。

例:new?=>'lucas'

© www.soinside.com 2019 - 2024. All rights reserved.