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
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道