python-3.x - 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 个字段用于存储值。
解决方案
您必须明确引用字符串输入,正如书中所写。
例如:新的?=>'卢卡斯'
推荐阅读
- ios - 我该怎么做才能正确循环
- python - 无法从 linux、c++ 执行“my_script”python 脚本的“main(filename)”函数;pModule = PyImport_Import(pName); 返回空
- maven - 如何使用已发布的 OLP 模式依赖项?
- c++ - 如何在 Windows 上增加 C++ 进程的 I/O 优先级
- perl - 为什么比较运算符 == 不适用于 perl 中的字符串?
- python-3.x - 如何解决使用 pip install Pillow 时出现的错误
- python - 来自 Google Composer Airflow 环境的数据存储区导出操作员权限错误
- python - Python Flask - 如何运行子进程(传递命令)?
- opencv4 - 如何为 OpenCV 4.0.1 版创建 32 位 dll 文件?
- mysql - 当我使用 POST 请求测试我的 springboot 应用程序时,电子邮件未保存在数据库中