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备份文件的脚本
Aug 11 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
python转换字符串为摩尔斯电码的方法
Jul 06 Python
Python OpenCV处理图像之图像直方图和反向投影
Jul 10 Python
Python列表推导式与生成器用法分析
Aug 02 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
Aug 02 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
Sep 04 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
python 使用事件对象asyncio.Event来同步协程的操作
May 04 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 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中使用Imagick实现各种图片效果实例
2015/01/21 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
一个加载js文件的小脚本
2007/06/28 Javascript
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
用js生产批量批处理执行命令
2008/07/28 Javascript
Javascript 类、命名空间、代码组织代码
2011/07/31 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
朴素贝叶斯算法的python实现方法
2014/11/18 Python
Python配置mysql的教程(推荐)
2017/10/13 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
详解Python安装scrapy的正确姿势
2018/06/26 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
工商企业管理实习自我鉴定
2013/12/04 职场文书
社区党员公开承诺书
2014/08/30 职场文书
死亡证明书样本说明
2014/10/18 职场文书
金陵十三钗观后感
2015/06/04 职场文书
学术研讨会主持词
2015/07/04 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python