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 Web框架Flask下网站开发入门实例
Feb 08 Python
谈谈如何手动释放Python的内存
Dec 17 Python
matplotlib设置legend图例代码示例
Dec 19 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
用Python写脚本,实现完全备份和增量备份的示例
Apr 29 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
python实现梯度法 python最速下降法
Mar 24 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
简单的命令查看安装的python版本号
Aug 28 Python
如何利用python和DOS获取wifi密码
Mar 31 Python
pandas DataFrame.shift()函数的具体使用
May 24 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 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
下载文件的点击数回填
2006/10/09 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
2011/03/31 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
更优雅的事件触发兼容
2011/10/24 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
python重试装饰器示例
2014/02/11 Python
Python线程的两种编程方式
2015/04/14 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
详解Python with/as使用说明
2018/12/13 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
写好求职信第一句话的技巧
2013/10/26 职场文书
演讲主持词
2014/03/18 职场文书
团日活动总结书
2014/05/08 职场文书
环保倡议书300字
2014/05/15 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
单身证明范本
2015/06/15 职场文书
青年教师听课心得体会
2016/01/15 职场文书