首页 > 解决方案 > 如何使用 Popen 在子进程中读取 json 文件,因为终端中有 33766 限制

问题描述

我正在使用此代码读取子进程中的 json 文件。它只适用于小型 json,如果它超过 33766 个计数。它会显示一个错误显示

FileNotFoundError: [WinError 206] The filename or extension is too long.

这是因为超过 33766 计数。那么如何使用 popen 读取 json 文件 .Read 这可以解决问题。帮我提些建议。我刚来这地方 :\

import subprocess
import json
import os

from pprint import pprint

auth = "authorization: token 1234

file = "jsoninput11.json"
fd=open("jsoninput11.json")
json_content = fd.read()
fd.close()


subprocess.run(["grpcurl", "-plaintext","-H", auth,"-d","@",json_content,"-format","json","100.20.20.1:5000","api.Service/Method"])

标签: pythonpython-3.xcurlsubprocessgrpc

解决方案


我不确定,但也许问题与bufsize(检查这个: 使用 subprocess.Popen 的非常大的输入和管道)它是否适用capture_output=False

subprocess.run(["grpcurl", "-plaintext","-H", auth,"-d","@",json_content,"-format","json","100.20.20.1:5000","api.Service/Method"], capture_output=False)

另一方面,如果您需要输出,您可能需要处理 Popen 的 PIPE。


推荐阅读