Python从STDIN读取JSON输入遇阻:输入有效JSON后程序无响应
解决JSON输入后程序停滞的问题
嘿,我之前也碰到过一模一样的问题!原因其实是json.load(sys.stdin)会一直等待输入流完全结束——它得确认你不会再输入更多内容了,才会开始解析JSON。你输入完{"id":1}按回车后,程序还以为你可能要继续输入,所以就卡在输入状态啦。
这里有几个实用的解决办法:
终端手动输入时触发结束信号:
- Windows系统:输入完JSON后,按下
Ctrl+Z,再按回车键,就能告诉程序输入结束了 - Unix/Linux/macOS系统:输入完后直接按
Ctrl+D,不需要额外回车
- Windows系统:输入完JSON后,按下
通过管道自动传入输入:
如果你不想手动触发结束信号,可以用管道把JSON内容直接传给脚本,比如在终端执行:echo '{"id":1}' | python your_script.py这样输入流会自动结束,程序会立刻解析并输出结果。
修改代码读取单行输入:
如果你希望输入一行JSON后立刻执行,不用等EOF,可以改成读取单行输入再解析,代码示例:import json import sys # 读取一行输入 input_line = sys.stdin.readline() # 或者用input()函数:input_line = input() data = json.loads(input_line) print(data['id'])这样输入完JSON按回车,程序就会直接处理这一行内容,不用再等结束信号。
内容的提问来源于stack exchange,提问作者Jay Shri




