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开发常用的一些开源Package分享
Feb 14 Python
python使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
python函数局部变量用法实例分析
Aug 04 Python
python中类变量与成员变量的使用注意点总结
Apr 29 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
Python基于pygame模块播放MP3的方法示例
Sep 30 Python
python+django加载静态网页模板解析
Dec 12 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
Feb 11 Python
Python常见读写文件操作实例总结【文本、json、csv、pdf等】
Apr 15 Python
python 图像处理画一个正弦函数代码实例
Sep 10 Python
Python 中的函数装饰器和闭包详解
Feb 06 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 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php实现编辑和保存文件的方法
2015/07/20 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
php实现微信发红包功能
2018/07/13 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
JQuery扩展插件Validate—4设置错误提示的样式
2011/09/05 Javascript
JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
2011/09/28 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
BootStrap中
2016/12/10 Javascript
100行代码理解和分析vue2.0响应式架构
2017/03/09 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
nodeJS服务器的创建和重新启动的实现方法
2018/05/12 NodeJs
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
vue实现循环切换动画
2018/10/17 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
用 Python 制作地球仪的方法
2020/04/24 Python
python属于解释语言吗
2020/06/11 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
2014年审计人员工作总结
2014/12/19 职场文书
检讨书之工作不认真
2019/08/14 职场文书
python全面解析接口返回数据
2022/02/12 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS