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 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
tensorflow实现softma识别MNIST
Mar 12 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
python实现弹窗祝福效果
Apr 07 Python
基于python的Paxos算法实现
Jul 03 Python
python应用文件读取与登录注册功能
Sep 23 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python3 全自动更新已安装的模块实现
Jan 06 Python
Python垃圾回收机制三种实现方法
Apr 27 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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函数(简单整理)
2010/04/30 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
PHP中require和include路径问题详解
2014/12/25 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
Python内置函数OCT详解
2016/11/09 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python实现决策树
2017/12/21 Python
Python针对给定列表中元素进行翻转操作的方法分析
2018/04/27 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
家具厂厂长岗位职责
2014/01/01 职场文书
退休感言
2014/01/28 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
向女朋友道歉的话
2015/01/20 职场文书
消防安全培训工作总结
2015/10/23 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android