在Python中执行系统命令的方法示例详解

发布时间 - 2026-01-11 03:15:35    点击率:

前言

Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法。

本文将详细介绍关于Python中如何执行系统命令的相关资料,下面话不多说了,来一起看看详细的介绍吧。

(1) os.system()

这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。

>>> import os 
>>> output = os.system('cat /proc/cpuinfo') 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> output # doesn't capture output 
0 

(2) os.popen()

这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。

>>> output = os.popen('cat /proc/cpuinfo') 
>>> output 
<open file 'cat /proc/cpuinfo', mode 'r' at 0x7ff52d831540> 
>>> print output.read() 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>><span style="font-size:14px;"> 

(3) commands模块

>>> import commands 
>>> (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') 
>>> print output 
processor : 0 
vendor_id : AuthenticAMD 
cpu family : 21 
... ... 
>>> print status 
0

注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

注意2:当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess。

(4) subprocess模块

该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。

>>> import subprocess 
>>> subprocess.Popen(["ls", "-l"]) <strong> # python2.x</strong> doesn't capture output 
>>> subprocess.run(["ls", "-l"]) <strong># python3.x</strong> doesn't capture output 
<subprocess.Popen object at 0x7ff52d7ee490> 
>>> total 68 
drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop 
drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents 
drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads 
... ... 
>>>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

补充:

最近在做那个测试框架的时候发现 Python 的另一个获得系统执行命令的返回值和输出的类。

最开始的时候用 Python 学会了 os.system() 这个方法是很多比如 C,Perl 相似的。

os.system('cat /proc/cpuinfo')

但是这样是无法获得到输出和返回值的,继续 Google,之后学会了 os.popen()。

output = os.popen('cat /proc/cpuinfo')
print output.read()

通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是怎么读取程序执行的返回值呢,当然咯继续请教伟大的 Google(联想到像我这样的人工作如果离开了 Google,不是成了废物。。。Baidu 忽视)。Google 给我指向了 commands — Utilities for running commands。
这样通过 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output

Python Document 中给的一个例子,很清楚的给出了各方法的返回。

>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'


# python  # 执行系统命令  # python2  # python执行linux命令  # Python如何执行系统命令  # Python3 执行系统命令并获取实时回显功能  # python执行系统命令后获取返回值的几种方式集合  # 日常整理python执行系统命令的常见方法(全)  # 在CentOS 7中使用Python 3执行系统命令的详细教程  # 返回值  # 就可以  # 的人  # 的是  # 是一个  # 给我  # 成了  # 去了  # 出了  # 学会了  # 说了  # 不多  # 只需  # 有一定  # 轻易地  # 对其  # 可以看到  # 详细介绍  # 就得  # 因为它 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 无锡营销型网站制作公司,无锡网选车牌流程?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  JS去除重复并统计数量的实现方法  如何快速生成高效建站系统源代码?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel怎么调用外部API_Laravel Http Client客户端使用  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何将凡科建站内容保存为本地文件?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  制作电商网页,电商供应链怎么做?  BootStrap整体框架之基础布局组件  Laravel如何实现用户密码重置功能?(完整流程代码)  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  EditPlus中的正则表达式实战(5)  LinuxShell函数封装方法_脚本复用设计思路【教程】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  jQuery validate插件功能与用法详解  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel如何使用Blade组件和插槽?(Component代码示例)  Bootstrap整体框架之JavaScript插件架构  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel如何使用Blade模板引擎?(完整语法和示例)  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何在云主机上快速搭建网站?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  网站建设保证美观性,需要考虑的几点问题!  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  如何在服务器上三步完成建站并提升流量?  Laravel如何实现本地化和多语言支持?(i18n教程)  如何用腾讯建站主机快速创建免费网站?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel如何配置Horizon来管理队列?(安装和使用)  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置