Python使用管道(pipe)协同标准输入输出流使程序通信

Python使用管道(pipe)使程序通信今天在看Python的知识时,发现了Windows下使用“|”,即管道,由于基本上没接触过因此觉得很新奇,还能通过管道配合Python的标准输入输出流来进行不同程序间的通信,传值。写了两个文件分别为write1.py,read1.pywrite1.py:print("Hello World!")print(50)
摘要由CSDN通过智能技术生成

Python使用管道(pipe)使程序通信

今天在看Python的知识时,发现了Windows下使用“|”,即管道,由于基本上没接触过因此觉得很新奇,还能通过管道配合Python的标准输入输出流来进行不同程序间的通信,传值。“|”之前的输出是“|”之后程序的输入,这点以前都没琢磨过来,只知道是这么用的,更不知道windows也行!!!

写了两个文件分别为write1.py,read1.py
write1.py:
print("Hello World!")
print(50)

read.py
print('this is my got string:%s'%input())
import sys
data = sys.stdin.readline()[:-1]
print('this data is :'+data+' double is :',int(data)*2)

调用:
D:\IStudy\Java\workspace\mypy\com\dgb\test>python write1.py | read1.py
this is my got string:Hello World!
this data is :50 double is : 100

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果子进程的输出是一个结构体(比如JSON、XML等格式),可以使用标准库中的 `json` 或 `xml` 模块来解析输出。具体来说,可以使用管道对象的 `read` 方法读取子进程的输出,并将其传递给 `json.loads` 或 `xml.etree.ElementTree.fromstring` 函数进行解析。下面是一个使用 `json` 模块的示例代码: ```python import subprocess import json # 启动子进程,并将标准输出重定向到一个管道中 p = subprocess.Popen(['python', 'script.py'], stdout=subprocess.PIPE) # 读取子进程的输出,并解析为JSON格式 output = p.stdout.read() data = json.loads(output) # 打印输出结果中的某个字段 print(data['field']) ``` 在上面的代码中,我们使用 `subprocess.Popen` 函数启动了一个 `script.py` 脚本的子进程,并将其标准输出重定向到一个管道中。然后,我们使用管道对象的 `read` 方法来读取子进程的输出,并使用 `json.loads` 函数将其解析为一个 Python 字典。最后,我们打印输出结果中的某个字段。 如果子进程的输出是 XML 格式,可以使用 `xml.etree.ElementTree.fromstring` 函数来解析。下面是一个示例代码: ```python import subprocess import xml.etree.ElementTree as ET # 启动子进程,并将标准输出重定向到一个管道中 p = subprocess.Popen(['python', 'script.py'], stdout=subprocess.PIPE) # 读取子进程的输出,并解析为XML格式 output = p.stdout.read() root = ET.fromstring(output) # 打印输出结果中的某个元素 print(root.find('tag').text) ``` 在上面的代码中,我们使用 `subprocess.Popen` 函数启动了一个 `script.py` 脚本的子进程,并将其标准输出重定向到一个管道中。然后,我们使用管道对象的 `read` 方法来读取子进程的输出,并使用 `xml.etree.ElementTree.fromstring` 函数将其解析为一个 Element 对象。最后,我们使用 `find` 方法找到输出结果中的某个元素,并打印其文本内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值