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中Continue语句的用法的举例详解
May 14 Python
django实现分页的方法
May 26 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
python中for用来遍历range函数的方法
Jun 08 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
python集合是否可变总结
Jun 20 Python
使用Matplotlib 绘制精美的数学图形例子
Dec 13 Python
Python实现哲学家就餐问题实例代码
Nov 09 Python
Python深度学习之Pytorch初步使用
May 20 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
《星际争霸2》终章已出 RTS时代宣告终结
2017/02/07 星际争霸
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php通过会话控制实现身份验证实例
2016/10/18 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
JavaScript 题型问答有答案参考
2010/02/17 Javascript
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python发腾讯微博代码分享
2014/01/10 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
深入理解Python中的super()方法
2017/11/20 Python
python删除服务器文件代码示例
2018/02/09 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
numpy.std() 计算矩阵标准差的方法
2018/07/11 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
Python 实现微信自动回复的方法
2020/09/11 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
员工拾金不昧表扬信
2014/01/09 职场文书
另类冲刺标语
2014/06/24 职场文书
2014年网管工作总结
2014/12/11 职场文书
优秀团员自我评价
2015/03/10 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android