在不保存文件的情况下在程序之间传输 JSON 字符串

Transfer a JSON string between programs without saving a file

假设我有两个 Python 模块,first.pysecond.pyfirst.py 生成一个 JSON 字符串; second.py 接受一个 JSON 字符串并进行后续处理。为了简化它们,请考虑下面编写的示例:

# first.py
import json
fruit = input("Name a fruit: ")
material_str = json.dumps({"fruit": fruit})
print(material_str)

# second.py
import json
material = json.loads(material_str)
def blender(material):
    serving = material["fruit"] + " juice"
    return serving
print(blender(material))

现在我的问题是:如何将material_strfirst.py转移到second.py?有没有办法让 material_str 以某种方式缓存在内存中,然后由 second.py 获取(或者更一般地说,由可以加载 JSON 字符串的其他语言的程序获取)?因为似乎不太可能printed字符串可以这样传输。

我知道我可以 json.dump 将字典放入 first.py 中的文件,并 json.load 放入 second.py 中。但是,这些代码每天会执行数千次,而 JSON 字符串仅在执行期间有用,所以我不想保存它们。将first.pysecond.py结合起来也不可行,因为实际上它们是两个不同人开发的大项目。事实上,将 first.py 视为执行 OCR 的脚本,将 second.py 视为一个 iOS 应用程序的脚本。现在需要将OCR的结果传输到app脚本中才能呈现。

我已经阅读了一些关于 sys.stdout 的文档,但看起来不太顺利。感谢任何帮助。

这个问题在 Python 中完全可以解决。在我的例子中,我唯一需要做的就是测试 JSON 字符串是否可以在不保存文件的情况下跨程序传输,就像我在标题中指出的那样。

我需要的是 second.py 中的 subprocess 模块在子进程中执行 first.py,然后将结果传递给后续过程。

import json
import subprocess
import re
# Get stdout from first.py
raw_result = subprocess.run(["python", "first.py"], stdout=subprocess.PIPE)
# Capture the JSON string
material_str = re.search(r".+({.+})", str(raw_result.stdout)).group(1)
# Load the JSON string as a dictionary
material = json.loads(material_str)
# Make juice
def blender(material):
    serving = material["fruit"] + " juice"
    return serving
print(blender(material))

通过执行python second.py并输入"Apple",returns"Apple juice"完美