如何输入长度超过 4095 个字符的值?

Cla*_*sen 2 input python-3.x

我正在尝试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()风格的函数来处理更大的输入,等等。

有没有办法能够成功粘贴大量输入?这将使我的工具的工作流程比必须粘贴到文件中、将其保存在某个地方,然后将文件的位置传递到脚本中要简单得多。

Jea*_*bre 6

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)