阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

四种执行python系统命令的方法

31次阅读
没有评论

共计 1197 个字符,预计需要花费 3 分钟才能阅读完成。

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

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

四种执行 python 系统命令的方法

一、os.system 方法

os.system(cmd)

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

>>> 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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1197字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中