subprocess模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了subprocess模块相关的知识,希望对你有一定的参考价值。
1.subprocess模块介绍我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system,,commands,popen2等也可以,比较乱,于是官方推出了subprocess,目地是提供统一的模块来实现对系统命令或脚本的调用
"os.system获取不到返回值"
>>> import os
>>> a = os.system("df -h")
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 98G 1.9G 97G 2% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 120M 895M 12% /boot
tmpfs 98M 0 98M 0% /run/user/0
>>> a
0
" os.popen可以获取到返回值"
>>> os.popen("df -h")
<open file ‘df -h‘, mode ‘r‘ at 0x7f95dedd0780>
>>> f = os.popen("df -h")
>>> f.read()
‘Filesystem Size Used Avail Use% Mounted on\n/dev/sda3 98G 1.9G 97G 2% /\ndevtmpfs 479M 0 479M 0% /dev\ntmpfs 489M 0 489M 0% /dev/shm\ntmpfs 489M 6.7M 482M 2% /run\ntmpfs 489M 0 489M 0% /sys/fs/cgroup\n/dev/sda1 1014M 120M 895M 12% /boot\ntmpfs 98M 0 98M 0% /run/user/0\n‘
"python2中的commands模块"
>>> import commands
>>> commands.getstatusoutput("df -h")
(0, ‘Filesystem Size Used Avail Use% Mounted on\n/dev/sda3 98G 1.8G 97G 2% /\ndevtmpfs 479M 0 479M 0% /dev\ntmpfs 489M 0 489M 0% /dev/shm\ntmpfs 489M 6.7M 482M 2% /run\ntmpfs 489M 0 489M 0% /sys/fs/cgroup\n/dev/sda1 1014M 120M 895M 12% /boot\ntmpfs 98M 0 98M 0% /run/user/0‘)
2.subprocess执行命令
2.1sbuprocess执行命令的三种方法
subprocess.run(*popenargs, input=None, timeout=None, check=False, **kwargs) #官方推荐
subprocess.call(*popenargs, timeout=None, **kwargs) #跟上面实现的内容差不多,另一种写法
subprocess.Popen() #上面各种方法的底层封装
以上是关于subprocess模块的主要内容,如果未能解决你的问题,请参考以下文章