python-3.x - 如何输入()值超过 4095 个字符?
问题描述
我正在尝试input()
一个包含大量 JSON 粘贴的字符串。
(为什么我要粘贴一大块 json 超出了我的问题范围,但是当我说我有一个不完全愚蠢的原因时,请相信我!)
但是,input()
出于此答案中所述的原因,仅抓取粘贴的前 4095 个字符。
我的代码大致如下:
import json
foo = input()
json.loads(foo)
当我粘贴超过 4095 个字符的 JSON 数据块时,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)
推荐阅读
- javascript - 将树视图容器添加到侧边栏
- firebase - 为什么加载单个文档的函数有这么多 READ 操作?
- c# - 如何在 c# UWP 中获取标签页的文本框?
- c++ - 遍历指向函数的指针数组时出错
- payment - 使用 CashApp 汇款的 URL/Deeplink
- python - PyQt5:当通过来自另一个线程的信号发送像素图时,Python 会因 SIGSEGV *有时* 而崩溃
- r - 在 R 中的多个列上重复组分析
- jquery - 针对 AWS 预签名 URL 的 PUT 请求的 SignatureDoesNotMatch
- file - 无法将任何文件上传到谷歌云存储
- c# - 音频不会在特定场景中停止播放