Python系统命令执行的四种方法-LINUX

首页 2024-07-07 10:28:09

Python中执行系统命令的常用方法有几种

注:以下实例代码在Python3.5下运行。

一、os.system方法

os.system(cmd)

在子终端运行系统命令中,可以获取命令执行后的返回信息和执行返回状态

立即学习“Python免费学习笔记(深入);

>>> import os
>>> os.system('date')
2018年 4月 8日 星期日 19时29分13秒 CST
0  #运行状态号,0表示正确

执行后返回两行结果,第一行为结果, 第二行是执行状态信息

二、os.popen方法

os.popen(cmd)

不仅执行命令,还返回执行后的信息对象(通常用于获得执行命令后的返回信息),结果通过管道文件返回

>>> import os
>>> nowtime = os.popen('date')
>>> print(nowtime.read())
2018年 4月 8日 星期日 19时30分35秒 CST
三、commands模块

方法 说明

getoutput 获得执行命令后的返回信息

getstatus 获取执行命令的状态值(执行命令成功返回0,否则返回非0)

getstatusoutput 获取执行命令和返回信息的状态值

>>> import commonds
>>> status, output = commands.getstatusoutput('date')
>>> print(status)    # 0
>>> print(output)    # 2018年 4月 8日 星期日 19时31分45秒 CST

注意1:使用这种方法在类unix系统下返回的返回值(status)这与脚本或命令执行后的返回值不同,因为os被调用.wait()原因,具体原因必须了解系统wait()的实现。需要正确的返回值(status),只需右移8位返回值即可。

注意2:当执行命令的参数或返回中包含中文文字时,建议使用subprocess。

四、subprocess模块

利用对线程的控制和监控,将返回的结果赋予一个变量,方便程序处理。可配置参数丰富,可自定义选项多,灵活性高。我以前用过os.system遇到文件描述符被子进程继承的问题,后来通过close_fds = False 解决了这个参数。官方文档:http://python.usyiyi.cn/python_278/library/subprocess.html

>>> import subprocess
>>> nowtime = subprocess.Popen('date', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
>>> print(nowtime.stdout.read())
2018年 4月 8日 星期日 19时32分41秒 CST

以上是实施python系统命令的四种方法的详细内容。请关注其他相关文章!


p