来自 STDIN 的 Python JSON 输入有问题
Trouble with Python JSON input from STDIN
input = json.load(sys.stdin)
print(input['id'])
当我输入 {"id":1} 并按回车键时,我的程序没有继续,我只是在输入中卡住了。在将有效的 json 传递到我的 stdlin 后,如何让程序继续运行?
当您从 sys.stdin
读取时,它会读取所有内容,直到它通常按 ctrl-d 遇到 EOF 字符,所以如果您输入 {"id":1} <ENTER> ctrl-d
它应该可以工作。
看起来你正在尝试做的是这样的事情
import json
json_as_str = input()
json_obj = json.loads(json_as_str)
print(json_obj['id'])
我通过粘贴这两行来交互式地尝试代码,然后意识到第二行被解释为 JSON 第一行正在阅读的一部分!作为一个模块,代码可以完美地工作。在控制台上,可见输入后跟一个换行符和 CTRL/D。
sholden$ cat /tmp/py.py
import json, sys
input = json.load(sys.stdin)
print(input['id'])
sholden$ python /tmp/py.py
{"id": 42}
42
input = json.load(sys.stdin)
print(input['id'])
当我输入 {"id":1} 并按回车键时,我的程序没有继续,我只是在输入中卡住了。在将有效的 json 传递到我的 stdlin 后,如何让程序继续运行?
当您从 sys.stdin
读取时,它会读取所有内容,直到它通常按 ctrl-d 遇到 EOF 字符,所以如果您输入 {"id":1} <ENTER> ctrl-d
它应该可以工作。
看起来你正在尝试做的是这样的事情
import json
json_as_str = input()
json_obj = json.loads(json_as_str)
print(json_obj['id'])
我通过粘贴这两行来交互式地尝试代码,然后意识到第二行被解释为 JSON 第一行正在阅读的一部分!作为一个模块,代码可以完美地工作。在控制台上,可见输入后跟一个换行符和 CTRL/D。
sholden$ cat /tmp/py.py
import json, sys
input = json.load(sys.stdin)
print(input['id'])
sholden$ python /tmp/py.py
{"id": 42}
42