我试图input()
包含大量 JSON 粘贴的字符串。
(为什么我要粘贴一大堆 json 超出了我的问题范围,但是当我说我有一个不完全愚蠢的原因时,请相信我!)
然而,input()
仅抓取粘贴的前 4095 个字符,原因见这个答案.
我的代码大致如下:
import json
foo = input()
json.loads(foo)
当我粘贴超过 4095 个字符的 JSON blob 时,json.loads(foo)
引发错误。 (错误根据 JSON 截断方式的具体情况而有所不同,但它总是会以某种方式失败,因为它缺少最终的}
.)
我在看的文档input(),并且它没有提及任何看起来对这个问题有用的内容。在非规范模式下没有可输入的标志,没有备用input()
- 风格的函数来处理更大的输入等。
有没有办法能够成功粘贴大量输入?这将使我的工具的工作流程比必须粘贴到文件中、将其保存在某处,然后将文件的位置传递到脚本中要简单得多。
Python 必须遵循终端规则。但是您可以使用 python 的系统调用来更改终端行为并将其改回来(Linux):
import subprocess,json
subprocess.check_call(["stty","-icanon"])
result = json.loads(input())
subprocess.check_call(["stty","icanon"])
或者,考虑尝试缩进json
从您的提供商转储,您可以逐行读取,然后解码。
data = "".join(sys.stdin.readlines())
result = json.loads(data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)