在不保存文件的情况下在程序之间传输 JSON 字符串
Transfer a JSON string between programs without saving a file
假设我有两个 Python 模块,first.py
和 second.py
。 first.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_str
从first.py
转移到second.py
?有没有办法让 material_str
以某种方式缓存在内存中,然后由 second.py
获取(或者更一般地说,由可以加载 JSON 字符串的其他语言的程序获取)?因为似乎不太可能print
ed字符串可以这样传输。
我知道我可以 json.dump
将字典放入 first.py
中的文件,并 json.load
放入 second.py
中。但是,这些代码每天会执行数千次,而 JSON 字符串仅在执行期间有用,所以我不想保存它们。将first.py
和second.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"完美
假设我有两个 Python 模块,first.py
和 second.py
。 first.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_str
从first.py
转移到second.py
?有没有办法让 material_str
以某种方式缓存在内存中,然后由 second.py
获取(或者更一般地说,由可以加载 JSON 字符串的其他语言的程序获取)?因为似乎不太可能print
ed字符串可以这样传输。
我知道我可以 json.dump
将字典放入 first.py
中的文件,并 json.load
放入 second.py
中。但是,这些代码每天会执行数千次,而 JSON 字符串仅在执行期间有用,所以我不想保存它们。将first.py
和second.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"完美