Python如何执行系统命令


Posted in Python onSeptember 23, 2020

一、背景说明

以前就感觉进步的速度和博客的数量成正比,所以很长一段时间内想不通为什么很多博客为什么到最后很少甚至不在更新了,直到最近自己也快成为断更的一员。

这段时间其实碰到和解决了挺多典型的问题,但上班高负荷运转下班没心思周末觉得太耗费时间,就导致一直拖着没写。

但Python执行系统命令这个问题,从学Python之初就一直在困扰,到最近又反复几次在上边遇到问题,实在是受不了。

二、Python执行系统命令的实现方式

2.1 执行命令不需要获取命令输出--os.system

有时候我们只需要执行命令并不需要获取命令的执行输出,此时我们就可以使用os.system()实现。

os.system()是C语言system()函数的封装,返回命令的退出状态码,命令执行结果输出到标准输出(stdout/窗口)。

使用示例如下:

import os

command = "ifconfig"
exit_code = os.system(command)
# 理论上command是一个字符串,但实际看command还是得变为字节数组
# 当命令中存在中文时可能会报编码错误,此时可以自己给命令编一下码
# exit_code = os.system(command.encode("gbk"))

参考:https://docs.python.org/3/library/os.html#os.system

2.2 执行系统命令并获取命令输出--os.popen()

如果我们想要获取命令的输出os.system()是不能实现的,此时可以使用os.popen()来实现。使用示例如下:

import os

command = "ifconfig"
command_output = os.popen(command).readlines()
print(command_output)

2.3 Python3更好的实现方式--subprocess

Python3引入了封装程序更高的subprocess模块。使用示例如下:

import subprocess

command = "ifconfig"
# 命令如果带参数则不能直接使用字符串的形式,不然后报FileNotFoundError: [Errno 2] No such file or directory: 'ifconfig -a'等错误
# 此时有两种处理办法,一种是写成以空格为分割的列表形式。可借助shlex.split(command_line)实现自动分割
# command = ["ifconfig", "-a"]
# 别一种是将shell参数置为True
# completed_process_obj = subprocess.run(command, shell=True)
# 当配置了stdout参数,completed_process_obj的stdout属性就会保存命令的输出
completed_process_obj = subprocess.run(command, stdout=subprocess.PIPE)
print(completed_process_obj.stdout.decode())
# subprocess.Popen()基础参数和run()差不多,比run()对命令进程有更强的控制能力。其也能用来获取命令输出
# popen_obj = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
# print(popen_obj.stdout.readlines())
# 其他如subprocess.call()、subprocess.check_call()、subprocess.check_output()都是旧方法了,Python3.5+都建议用run()

参考:https://docs.python.org/3/library/os.html#os.popen

以上就是Python如何执行系统命令的详细内容,更多关于Python执行系统命令的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python中装饰器级连的使用方法示例
Sep 29 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
用python写扫雷游戏实例代码分享
May 27 Python
python用post访问restful服务接口的方法
Dec 07 Python
python开发准备工作之配置虚拟环境(非常重要)
Feb 11 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
Python手动或自动协程操作方法解析
Jun 22 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python SMTP发送电子邮件的示例
Sep 23 #Python
python两个list[]相加的实现方法
Sep 23 #Python
python matplotlib库的基本使用
Sep 23 #Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 #Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 #Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 #Python
python中如何打包用户自定义模块
Sep 23 #Python
You might like
PHP define函数的使用说明
2008/08/27 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
DOM基础教程之使用DOM设置文本框
2015/01/20 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
6种javascript显示当前系统时间代码
2015/12/01 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
解决Python requests 报错方法集锦
2017/03/19 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Python模拟FTP文件服务器的操作方法
2020/02/18 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
医生自荐信
2013/10/11 职场文书
村委会主任先进事迹
2014/01/15 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
家长通知书家长意见
2015/06/03 职场文书
python 批量压缩图片的脚本
2021/06/02 Python