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中dir函数用法分析
Apr 17 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
Django 连接sql server数据库的方法
Jun 30 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
Python 微信爬虫完整实例【单线程与多线程】
Jul 06 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python实现全排列代码(回溯、深度优先搜索)
Feb 26 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
Apr 21 Python
为什么python比较流行
Jun 19 Python
python脚本定时发送邮件
Dec 22 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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
smarty的保留变量问题
2008/10/23 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
限制文本字节数js代码
2007/03/06 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
Vue父子之间值传递的实例教程
2020/07/02 Javascript
Python全局变量用法实例分析
2016/07/19 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
python如何将两个txt文件内容合并
2019/10/18 Python
python、Matlab求定积分的实现
2019/11/20 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
Python标准库itertools的使用方法
2020/01/17 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
django rest framework serializers序列化实例
2020/05/13 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
超市5.1促销活动
2014/01/15 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
先进教师个人事迹材料
2014/12/15 职场文书
网站文案策划岗位职责
2015/04/14 职场文书
地球上的星星观后感
2015/06/02 职场文书
地雷战观后感
2015/06/09 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
docker-compose部署Yapi的方法
2022/04/08 Servers