python之subprocess模块(代码片段)

author author     2022-12-20     626

关键词:

前言
其实有一个模块也支持执行系统命令,那个模块就是sys.system,但他执行系统命令会直接通过主进程去执行命令,那假如,该命令的执行需要耗费一个小时,那么主进程会卡一个小时,而不会去干别的事,这样就会导致程序的运行效率低下。

如果由subprocess执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大家都知道进程之间的内存空间是独立的,也就是说进程之间是不能相互访问的,那么在subprocess中,有个管道的概念,既然固定死了进程之间不能相互访问,那么可以将执行命令的结果输出到管道里,该管道其实就是一块共享的内存空间,可以让主进程获取到该共享内存空间存放的数据

subprocess基本工作原理:

技术图片

subprocess简单案例

import subprocess 
#  创建一个子进程去执行系统命令
obj=subprocess.Popen(
    ‘ps -ef‘,        # 执行的系统命令(必须是字符串格式)
    shell=True,      # 指定命令解释器来解释执行的这条命令
    stdout=subprocess.PIPE, # 将执行的正确结果丢到管道(共享内存空间,用于进程之间共享)
    stderr=subprocess.PIPE  # 将执行的错误结果丢到另一个新的管道
)

‘‘‘
当从任意一个管道,例如正确或者错误结果管道中获取值,
‘‘‘

# 从正确管道中获取值
res=obj.stdout.read() # 主进程去管道里获取正确的结果
print(res.decode(‘utf-8‘)) # 获取的结果是bytes类型,需要指定decode指定编码

# 从错误管道中获取值
res2=obj.stderr.read()
print(res2.decode(‘utf-8‘))

subprocess模块(代码片段)

1.subprocess模块介绍我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system,,commands,popen2... 查看详情

常用模块——subprocess模块(代码片段)

subprocess模块 subprocess主要用于执行系统指令(启动子进程)与os.system的不同在于#subprocess可以与这个子进程进行数据交换。importsubprocess#从管道中读取数据管道就是两个进程通讯的媒介cmd=r‘dirF:Python_exe‘res=subprocess.Popen(cmd,she... 查看详情

subprocess模块(代码片段)

我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system,>>>os.system(‘uname-a‘)Darwin... 查看详情

python3subprocess模块(代码片段)

importsubprocesscmd=input(">>>:")res=subprocess.Popen(cmd,#字符串指令,如dir或ipconfig等等shell=True,#使用shell,就相当于使用cmd窗口stderr=subprocess.PIPE,#标准错误输出,PIPE为管道stdout=subprocess.PIPE,#标准输出)print(res.std 查看详情

subprocess模块(代码片段)

  需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system。  执行返回命令执行状态,利用ech... 查看详情

subprocess模块(代码片段)

一、subprocess以及常用的封装函数运行python的时候,我们都是在创建并运行一个进程。像Linux进程那样,一个进程可以fork一个子进程,并让这个子进程exec另外一个程序。在Python中,我们通过标准库中的subprocess包来fork一个子进程... 查看详情

python--终端工具之subprocess(代码片段)

一、subprocess.getstatusoutputimportsubprocesscmd=‘ifconfig‘defcmds(cmd,print_msg=True):status,result=subprocess.getstatusoutput(cmd)ifstatus>0:return"status":"failed","msg":resultreturn"status":"succeed","msg":result  可以将执行之后的状态和执行结果反馈,但是痛点... 查看详情

subprocess模块(代码片段)

常用模块学习—subprocess模块详解要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system。>>>os... 查看详情

subprocess模块(代码片段)

#subprocess模块:启子进程模块importsubprocessobj=subprocess.Popen(‘tasklist‘,shell=True,#shell=True调用命令解释器来解释前面的命令,发信号并不执行stdout=subprocess.PIPE,#PIPE管道stderr=subprocess.PIPE,#放入报错信息)print(obj.stdout.read().de 查看详情

模拟ssh黏包hashlib模块(代码片段)

一、模拟ssh1、subprocess模块  subprocess模块是python从2.4版本开始引入的模块。主要用来取代一些旧的模块方法,如os.system、os.spawn*、os.popen*、commands.*等。subprocess模块可用于产生进程,并连接到进程的输入/输出/错误输出管道,... 查看详情

subprocess模块(代码片段)

功能:执行系统指令三种执行方法subprocess.run(*popenargs,input=None,timeout=None,check=False,**kwargs)#官方推荐subprocess.call(*popenargs,timeout=None,**kwargs)#跟上面实现的内容差不多,另一种写法subprocess.Popen()#上面各种方法的底层封装 run()标 查看详情

subprocess模块(****)(代码片段)

Subprocess模块(****)   当我们需要调用系统的命令的时候,最先考虑的os模块。用os.system()和os.popen()来进行操作。但是这两个命令过于简单,不能完成一些复杂的操作,如给运行的命令提供输入或者读取命令的输出,判断... 查看详情

subprocess模块(代码片段)

```importos##os.system()#输出命令结果到屏幕,返回命令的执行状态##os.popen("dir").read#会保存命令的执行结果并输出#在linux里面importsubprocesssubprocess.run(["ipconfig","ping192.168.1.1"])#同时执行多条命令subprocess.run("df-h|grepbook",shell=Tru 查看详情

python笔记65-python3subprocess执行cmd命令行获取返回结果(代码片段)

前言subprocess模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。Popen是subprocess的核心,子进程的创建和管理都靠它处理。subprocess.Popensubprocess模块定义了一个类:PopenclassPopen(obje... 查看详情

pyhton之subprocess模块和configparser模块

#importos#whileTrue:#cmd=input(‘>>‘).strip()#ifnotcmd:continue#ifcmd==‘q‘:break#os.system(cmd)importsubprocessobj=subprocess.Popen(‘dir‘,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 查看详情

python3之xml&configparser&hashlib&subprocess&logging模块

1、xml模块XML指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML被设计用来传输和存储数据。XML是一套定义语义标记的规则,这些标记将文档... 查看详情

模块介绍(代码片段)

subprocess模块它是可以远程操作主机,模拟shell命令‘dir‘是windows上查看任务的命令 importsubprocessobj=subprocess.Popen(‘dir‘,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)#Popen是模拟cmd命令,‘dir‘是windows上查看任务的命令,shel 查看详情

常用模块(subprocess/hashlib/configparser/logging/re)(代码片段)

一、subprocess(用来执行系统命令)importoscmd=r‘dirD:xxx|findstr"py"‘#res=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)##从管道中读取数据管道就是两个进程通讯的媒介##print(type(res.stdout.read().decode 查看详情