如何从进程的管道读取字典输出
时间: 2024-02-28 12:56:21 浏览: 39
从进程的管道读取字典输出的方法与从标准输入中读取数据类似,只需要使用subprocess模块启动子进程,然后使用子进程的stdout管道读取子进程的输出即可。
以下是一个示例,说明如何使用subprocess模块从另一个Python程序中读取字典格式的输出:
**程序1:**
```python
import json
data = {"name": "Tom", "age": 18, "gender": "male"}
json_str = json.dumps(data)
print(json_str)
```
**程序2:**
```python
import subprocess
import json
# 启动子进程并读取输出
p = subprocess.Popen(["python", "program1.py"], stdout=subprocess.PIPE)
output, _ = p.communicate()
# 将JSON格式的字符串解析为字典
data = json.loads(output)
# 输出字典中的数据
print(data["name"])
print(data["age"])
print(data["gender"])
```
在程序2中,使用subprocess.Popen()函数启动程序1,并将其标准输出管道连接到程序2的标准输入管道。然后使用communicate()函数从管道中读取程序1的输出。最后,使用json.loads()函数将JSON格式的字符串解析为字典,输出字典中的数据。
运行程序2后,输出结果与上一个示例相同:
```
Tom
18
male
```
这样就完成了从进程的管道读取字典输出的过程。