python3中subprocess模块的使用

前言

python代码有需要从linux、win、类unix上获取终端的输出,这就需要使用到subprocess模块

使用示例
  • 导入模块

pip3 install subprocess.run

# -*- coding: utf-8 -*-

import subprocess
import platform

def excuteCommand(command):
    """
    获取命令行输出的信息
    """
    subp = subprocess.Popen(command,
                            shell=True,
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE,
                            encoding='utf-8')
    # 当有命令终端输出时,返回输出,并编码成中文,否则,返回"failure"                            
    if subp.poll() != 0:
        return subp.stdout.read().decode("GB2312")
        # return subp.stdout.read().decode("gbk")
    else:
        return "failure"


if __name__ == "__main__":
    if "Linux" in platform.platform():
        command = "ping -c 4 10.0.0.2"
    else:
        command = "ping 10.0.0.2"
    getInfo = excuteCommand(command)
    print(getInfo)
结语

Subprocess management
subprocess.DEVNULL
Python3 subprocess Runoob

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SubprocessPython标准库用于创建新进程的模块。它允许你启动一个新的进程,并与该进程进行交互,包括向其输入数据、从其输出数据等。 其,communicate()方法是Subprocess模块最常用的方法之一,它用于与子进程进行交互。当你使用Subprocess启动一个新的进程时,你可以在communicate()方法向该进程输入数据,并在该进程完成后从该进程读取输出数据。 具体来说,communicate()方法会向进程的标准输入发送数据,并等待该进程完成后读取其标准输出和标准错误输出。该方法会返回一个元组,其第一个元素表示标准输出,第二个元素表示标准错误输出。 例如,下面的代码展示了如何使用Subprocess模块来启动一个新的进程,并将数据传递给该进程: ``` import subprocess # 启动一个新的进程 process = subprocess.Popen(['python', 'my_script.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # 向进程发送数据 process.stdin.write('input data'.encode()) # 等待进程完成并读取其输出数据 output, error = process.communicate() # 打印输出结果 print(output.decode()) ``` 在上面的代码,我们启动了一个新的进程,并将一个字符串作为输入数据发送给该进程。然后,我们使用communicate()方法等待该进程完成,并读取其标准输出和标准错误输出。最后,我们将输出结果打印出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值