返回顶部
首页 > 资讯 > 后端开发 > Python >python模块--subprocess
  • 121
分享到

python模块--subprocess

模块pythonsubprocess 2023-01-31 06:01:54 121人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

subprocess模块                                                                                                            

subprocess模块                                                                                                                                      

    subprocess模块用于帮助我们在python代码中去执行一些系统命令,在执行Python程序时,该模块会创建出一个子进程,来运行外部程序。

    该模块拥有多个方法,具体如下:

  • subprocess.call()
    直接打印系统命令的执行结果,如果执行成功,返回状态码为0,否则为1,例如:

#执行成功
import subprocess
CALL1 = subprocess.call('ping 127.0.0.1 -n 1',shell=True)
print("Returncode:%d"%CALL1)

打印结果为:

正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms
Returncode:0
#执行失败
CALL2 = subprocess.call('ping 1.1.1.2 -n 1',shell=True)
print("Returncode:%d"%CALL2)

打印结果为:

正在 Ping 1.1.1.2 具有 32 字节的数据:
请求超时。

1.1.1.2 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
Returncode:1


  • subprocess.check_call()
    直接打印系统命令的执行结果,使用方法与subprocess.call()相同,只不过该函数会检测返回状态码,如果为1,则会抛出subprocess.CalledProcessError错误,例如:

import subprocess
# 执行成功
# CHECK_CALL1 = subprocess.check_call('ping 127.0.0.1 -n 1',shell=True)
# print(CHECK_CALL1)
# 执行失败
CHECK_CALL2 = subprocess.check_call('ping 1.1.1.2 -n 1',shell=True)
print(CHECK_CALL2)

打印结果为:

正在 Ping 1.1.1.2 具有 32 字节的数据:
请求超时。

1.1.1.2 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
Traceback (most recent call last):
  File "C:/Users/Administrator/PyCharmProjects/first/subprocess/check_call.py", line 7, in <module>
    CHECK_CALL2 = subprocess.check_call('ping 1.1.1.2 -n 1',shell=True)
  File "C:\python3.6\lib\subprocess.py", line 291, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'ping 1.1.1.2 -n 1' returned non-zero exit status 1.

可以结合try...expect...语句做异常处理。


  • subprocess.check_output()

    不会将系统命令的执行结果直接打印出来,返回一个bytes类型的对象,该对象包含了系统命令的执行结果,如果执行失败会抛出subprocess.CalledProcessError错误,例如:

import subprocess
#执行成功
CHECK_OUTPUT1 = subprocess.check_output('ping 127.0.0.1 -n 1',shell=True)
print(type(CHECK_OUTPUT1))
print(str(CHECK_OUTPUT1,'gbk'))

打印结果为:

<class 'bytes'>

正在 Ping 127.0.0.1 具有 32 字节的数据:
来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=128

127.0.0.1 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms


  • subprocess.Popen()

    上面几个函数都是Popen()的封装,主进程都会等待子进程执行完毕,Popen()创建的子进程不会被等待,相当于异步执行。

    1.Popen()创建的对象有多个方法,可以针对子进程执行个性化操作,例如:

import subprocess
import time
time.clock()
POPEN1 = subprocess.Popen('ping 127.0.0.1 -n 10',shell=True)
print(POPEN1)
print(time.clock())

打印结果为:

<subprocess.Popen object at 0x02230810>
0.06108553745727746
#从时间上看,主程序很快就结束了

Popen()创建的对象方法包括:

POPEN1.poll() # 检查子进程状态
POPEN1.kill() # 终止子进程
POPEN1.terminate() # 终止子进程
POPEN1.send_signal() # 向子进程发送信号
pid属性包含了子进程的pid号

    2.subprocess.Popen()另一个常用的功能是文本流控制,对应的"标准输入"、"标准输出"、"标准错误"分别是:

POPEN1.stdin
POPEN1.stdout
POPEN1.stderr

subprocess.PIPE(为文本流提供一个缓存区)作为管道,可以用来连接标准输出和标准输入,例如:

POPEN2 = subprocess.Popen('ping 127.0.0.1 -n 1',shell=True,stdout=subprocess.PIPE)
STDOUT2 = POPEN2.stdout
# print(str(STDOUT2.read(),'gbk'))

POPEN3 = subprocess.Popen('findstr 数据包',shell=True,stdin=STDOUT2,stdout=subprocess.PIPE)
STDOUT3 = POPEN3.stdout
print(str(STDOUT3.read(),'gbk'))

执行结果为:

数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),



--结束END--

本文标题: python模块--subprocess

本文链接: https://lsjlt.com/news/190268.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python模块--subprocess
    subprocess模块                                                                                                            ...
    99+
    2023-01-31
    模块 python subprocess
  • python subprocess模块
    subprocess模块 允许你生成一个或多个进程,并且可以跟它交互,并且获取返回的结果,这个模块想要替换掉几个老的方法: os.system os.spawn* 所以以后跟系统交互的命令,尽...
    99+
    2023-01-31
    模块 python subprocess
  • python的subprocess模块
    1 os与commands模块​2 subprocess模块​3 subprocess.Popen类 我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。​​那么我们如何通过Python来完成这些...
    99+
    2023-01-31
    模块 python subprocess
  • python模块之subprocess
    subprocess.run() 运行并等待args参数指定的指令完成,返回CompletedProcess实例。 参数:(*popenargs, input=None, capture_output=False, timeout=Non...
    99+
    2023-01-31
    模块 python subprocess
  • Python之Subprocess模块
    前言其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下。 如果由su...
    99+
    2023-01-31
    模块 Python Subprocess
  • Python中的Subprocess模块
    原文出处:https://segmentfault.com/a/1190000009176351以前我一直用os.system()处理一些系统管理任务,因为我认为那是运行linux命令最简单的方式.我们能从Python官方文档里读到应该用s...
    99+
    2023-01-31
    模块 Python Subprocess
  • Python基础之hashlib模块subprocess模块logging模块
    目录一、hashlib模块基本操作与用法二、subprocess模块简介基本操作与用法三、logging模块简介基本操作与用法一、hashlib模块 什么是哈希模块: hashlib...
    99+
    2024-04-02
  • subprocess—Python多进程模块
    subprocess—Python多进程模块 1.概述 这篇文章介绍并行运算中的subprocess模块,subprocess 模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取...
    99+
    2023-09-03
    python linux 运维
  • Python hashlib模块与subprocess模块使用详细介绍
    目录1、什么是哈希hash2、hash的用途3、如何用4、subprocess模块1、什么是哈希hash hash一类算法,该算法接受传入的内容,经过运算得到一串hash值 hash...
    99+
    2024-04-02
  • python的subprocess模块有什么功能
    Python的subprocess模块允许你创建新的进程、连接到它们的输入/输出/错误管道,并获取它们的返回代码。该模块提供了一种简...
    99+
    2024-04-02
  • python subprocess模块怎么安装和使用
    要安装subprocess模块,你不需要单独安装它,因为它是Python的内置模块之一。只需确保你的Python版本是3.0以上。 ...
    99+
    2024-02-29
    python subprocess
  • Python3 subprocess模块怎么使用
    本篇内容介绍了“Python3 subprocess模块怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!从python2.4版本开始,...
    99+
    2023-06-27
  • python中subprocess模块subprocess.run,subprocess.getoutput,subprocess.Popen、subprocess.call的使用
    subprocess可以帮我们执行命令,获取执行结果及返回内容。 1、subprocess.run() 此方法为python3.5版本后的推荐方法,可以获取执行结果、返回内容等一些常用的信息, 满足大...
    99+
    2023-09-01
    python linux 运维
  • 一文搞懂Python中subprocess模块的使用
    目录简介常用方法和接口subprocess.run()解析subprocess.Popen()解析Popen 对象方法subprocess.run()案例subprocess.cal...
    99+
    2022-11-21
    Python subprocess模块使用 Python subprocess模块 Python subprocess
  • Python移动测试开发subprocess模块项目实战
    目录一、背景二、subprocess 模块基础1. subprocess.run 方法2. subprocess.Popen 方法3. run 与 Popen 的同步/异步对比实验三...
    99+
    2024-04-02
  • python调用subprocess模块实现命令行操作控制SVN的方法
    使用python的subprocess模块实现对SVN的相关操作。 设置GitSvn类,在该类下自定义执行SVN常规操作的方法。 SVN的常规操作包括:(1)获取SVN当前版本,通过...
    99+
    2024-04-02
  • Python模块:time模块
    time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一...
    99+
    2023-01-31
    模块 Python time
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • python—subprocess、gl
    一、subprocess模块1.subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过...
    99+
    2023-01-31
    python subprocess gl
  • python中的subprocess
     python2.7 源码中的注释(由于能力有限,翻译的不太准确): 这个模块允许您开启进程、连接输入、输出和错误的管道,并获取他们的返回代码。这个模块计划替代一些旧代码,如: os.system、os.spawn*、os.Popen、po...
    99+
    2023-01-31
    python subprocess
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作