【发布时间】:2018-05-04 17:35:58
【问题描述】:
input = json.load(sys.stdin)
print(input['id'])
当我输入 {"id":1} 并按回车键时,我的程序无法继续,我只是卡在输入中。将有效的 json 传递给我的 stdlin 后,如何使程序继续运行?
【问题讨论】:
-
您必须关闭该文件。在 Linux 和其他类 Unix 系统上,您可以通过按 Ctrl-D 来执行此操作。我认为在 Windows 上你需要 Ctrl-Z,但我对 Windows 了解不多。
-
顺便说一句,您忘记在代码中包含
import语句。并且不要使用input作为变量名,这会影响内置的input函数。 -
非常清楚——这是python库中的一个BUG。解析 JSON 对象的结尾时非常清楚(只需要一个字符前瞻)。一些 JSON 解析库 (c++) 可以正确执行此操作,因此上述用法(从标准输入读取)可以正常工作;这个阅读器 github.com/SophistSolutions/Stroika/blob/v2.1b9/Library/Sources/…> 最多只向前看一个字符来找到 JSON 的结尾。
-
这不是错误。
json.load获取一个打开的文件并读取其全部内容,文档声明它使用read()来执行此操作。
标签: json python-3.x stdin