在Python中执行系统命令的方法示例详解,python示例
在Python中执行系统命令的方法示例详解,python示例
前言
Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法。
本文将详细介绍关于Python中如何执行系统命令的相关资料,下面话不多说了,来一起看看详细的介绍吧。
(1) os.system()
这个方法直接调用标准C的system()
函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。
>>> import os >>> output = os.system('cat /proc/cpuinfo') processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>> output # doesn't capture output 0
(2) os.popen()
这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。
>>> output = os.popen('cat /proc/cpuinfo') >>> output <open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> >>> print output.read() processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>><span style="font-size:14px;">
(3) commands模块
>>> import commands >>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') >>> print output processor : 0 vendor_id : AuthenticAMD cpu family : 21 ... ... >>> print status 0
注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。
注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。
(4) subprocess模块
该模块是一个功能强大的子进程管理模块,是替换os.system
, os.spawn*
等方法的一个模块。
>>> import subprocess >>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output >>> subprocess.run(["ls", "-l"]) <strong># python3.x</strong> doesn't capture output <subprocess.Popen object at 0x7ff52d7ee490> >>> total 68 drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads ... ... >>>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对帮客之家的支持。
相关内容
- Python 关于反射和类的特殊成员方法,python反射成员
- python中reload(module)的用法示例详解,pythonreload
- Python 实现购物商城,含有用户入口和商家入口的示例,
- 轻松理解Python 中的 descriptor,pythondescriptor
- Python实现求笛卡尔乘积的方法,python笛卡尔乘积
- Python实现输出程序执行进度百分比的方法,python进度
- Python实现变量数值交换及判断数组是否含有某个元素的
- Python使用当前时间、随机数产生一个唯一数字的方法,
- Python基于time模块求程序运行时间的方法,python程序运行
- python Socket之客户端和服务端握手详解,pythonsocket
评论关闭