Python3执行系统命令 python技术培训

来源:http://www.oldboyedu.com
Python是一款操作简单的编程语言,内置丰富的库,能够很容易的实现强大的功能,在使用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()
这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。

enter code here
>>> 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模块

enter code here
>>> 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*等方法的一个模块。

enter code here
>>> 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
... ...

>>

感谢您为本话题评分。
共有0个回答
    目前还没有评论,要不您来说几句?
以下是预览效果,请确认排版好了再点回复。
如果你认为此话题有广告、灌水的嫌疑,请给此话题评一颗星。平均分低的话题将不会再显示。
良好的讨论氛围由大家共同维护。