subprocess模块(代码片段)

感动#心 感动#心     2022-11-16     283

关键词:

功能:

执行系统指令

三种执行方法

  • subprocess.run(*popenargs, input=None, timeout=None, check=False, **kwargs) #官方推荐

  • subprocess.call(*popenargs, timeout=None, **kwargs) #跟上面实现的内容差不多,另一种写法

  • subprocess.Popen() #上面各种方法的底层封装

 

run()

标准写法

subprocess.run([df,-h],stderr=subprocess.PIPE,stdout=subprocess.PIPE,check=True)   #经过python处理过后,再交由系统执行

涉及到管道|的命令需要这样写

subprocess.run(df -h|grep disk1,shell=True) #shell=True的意思是这条命令直接交给系统去执行,不需要python负责解析

 

call()

#执行命令,返回命令执行状态 , 0 or 非0
>>> retcode = subprocess.call(["ls", "-l"])

#执行命令,如果命令结果为0,就正常返回,否则抛异常
>>> subprocess.check_call(["ls", "-l"])
0

#接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果 
>>> subprocess.getstatusoutput(ls /bin/ls)
(0, /bin/ls)

#接收字符串格式命令,并返回结果
>>> subprocess.getoutput(ls /bin/ls)
/bin/ls

#执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res
>>> res=subprocess.check_output([ls,-l])
>>> res
btotal 0\ndrwxr-xr-x 12 alex staff 408 Nov 2 11:05 OldBoyCRM\n

 

Popen()

popen()与run()的区别在于,Popen会在发起命令后立刻返回,而不等命令执行结果。

常用参数:

  • args:shell命令,可以是字符串或者序列类型(如:list,元组)
  • stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
  • preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用
  • shell:同上
  • cwd:用于设置子进程的当前目录
  • env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。

 

popen调用后会返回一个对象,可以通过这个对象拿到命令执行结果或状态等,该对象有以下方法:

poll()    # 检查子进程是否终止,并返回相应字符
wait()   # 等待子进程终止,返回相应字符
terminate()  # 终止所启动的进程
kill()  # 杀死所启动的进程 
communicate()  #与启动的进程交互,发送数据到stdin,并从stdout接收输出,然后等待任务结束
send_signal(signal.xxx)     #发送系统信号
pid   # 拿到所启动进程的进程号

a = subprocess.Popen(‘python3 guess_age.py‘,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE,shell=True)

 

#执行命令,返回命令执行状态 , 0 or 非0
>>> retcode = subprocess.call(["ls", "-l"])

#执行命令,如果命令结果为0,就正常返回,否则抛异常
>>> subprocess.check_call(["ls", "-l"])
0

#接收字符串格式命令,返回元组形式,第1个元素是执行状态,第2个是命令结果 
>>> subprocess.getstatusoutput(‘ls /bin/ls‘)
(0, ‘/bin/ls‘)

#接收字符串格式命令,并返回结果
>>> subprocess.getoutput(‘ls /bin/ls‘)
‘/bin/ls‘

#执行命令,并返回结果,注意是返回结果,不是打印,下例结果返回给res
>>> res=subprocess.check_output([‘ls‘,‘-l‘])
>>> res
b‘total 0\ndrwxr-xr-x 12 alex staff 408 Nov 2 11:05 OldBoyCRM\n‘

subprocess模块(代码片段)

subprocess在Windows平台和Linux平台不同Windows平台importsubprocessobj=subprocess.Popen(r‘E:Python学习相关我的博客文件Python正课内容‘,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,)print(obj)#<subprocess.Popen 查看详情

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模块(代码片段)

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

subprocess模块(代码片段)

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

subprocess模块(代码片段)

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

模块介绍(代码片段)

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

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/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 查看详情

python之subprocess模块(代码片段)

...去干别的事,这样就会导致程序的运行效率低下。如果由subprocess去执行系统命令的时候并不会让主进程去执行,而是主进程会开辟出一个子进程去执行,并不会影响到主进程的运行,主进程该干嘛就干嘛,那么又有个问题,大... 查看详情

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

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

补充模块(代码片段)

 struct模块  importstruct#压包res=struct.pack(‘i‘,999999999)print(res)print(len(res))#解包obj=struct.unpack(‘i‘,res)print(obj[0]) subprocess模块importsubprocessres=subprocess.Popen(‘dir‘,s 查看详情

subprocess模块(代码片段)

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

bigger-mai养成计划,subprocess模块(代码片段)

subprocess模块是python从2.4版本开始引入的模块。主要用来取代一些旧的模块方法,如os.system、os.spawn*、os.popen*、commands.*等。subprocess通过子进程来执行外部指令,并通过input/output/error管道,获取子进程的执行的返回信息。常用方法... 查看详情

subprocess模块popen调用命令的使用(代码片段)

...下所有文件目录"""svn_list_cmd="".join(["svn","list",path])res_obj=subprocess.Popen(svn_list_cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,close_fds=True)svn_home_dirs=res_obj.stdout.readlines()returnsvn_home_dirs#注意str转成bytes类型,返回的列表中的元素是bytes类... 查看详情

ssh粘包(代码片段)

 importsubprocess#模块res=subprocess.Popen(cmd.decode(‘utf-8‘),shell=True,#紫色-终端命令stdout=subprocess.PIPE,#输出stdin=subprocess.PIPE,#输出stderr=subprocess.PIPE)#错误stderr=res.stderr.read()stdin=res.stde 查看详情