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
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密