我正在尝试input()一个包含大量 JSON 粘贴的字符串。
(为什么我要粘贴一大堆 json 超出了我的问题范围,但是当我说我有一个不完全愚蠢的原因时,请相信我!)
但是,由于此答案input()中描述的原因,仅抓取粘贴的前 4095 个字符。
我的代码大致如下:
import json
foo = input()
json.loads(foo)
Run Code Online (Sandbox Code Playgroud)
当我粘贴长度超过 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"])
Run Code Online (Sandbox Code Playgroud)
或者,考虑尝试从提供商处获取缩进json转储,您可以逐行读取该转储,然后进行解码。
data = "".join(sys.stdin.readlines())
result = json.loads(data)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |