【Python系列】执行 Shell 命令的六种方法

2024-08-21 09:20

本文主要是介绍【Python系列】执行 Shell 命令的六种方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 1. `os.system()`
      • 特点:
    • 2. `subprocess.run()`
      • 特点:
    • 3. `subprocess.Popen()`
      • 特点:
    • 4. `os.popen()`
      • 特点:
    • 5. `subprocess.check_output()`
      • 特点:
    • 6. `subprocess.call()`
      • 特点:
    • 使用建议

在 Python 编程中,有时我们需要执行一些 shell 命令来完成特定的任务,比如文件操作、系统调用等。Python 提供了多种内建的方法来执行这些命令,每种方法都有其适用场景和特点。
在这里插入图片描述

1. os.system()

os.system()是执行 shell 命令的最简单方法。它接受一个字符串作为命令,并在 shell 中执行。返回值是命令的退出状态码,通常 0 表示成功,非 0 表示失败。

import os
result = os.system('ls -l')
print("Exit status:", result)

特点:

  • 简单易用。
  • 无法获取命令的输出或错误信息。
  • 无法处理命令的超时。

2. subprocess.run()

subprocess.run()是推荐的方式,因为它提供了更多的灵活性和功能。它可以执行命令,并且可以捕获输出和错误信息。

import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print("Output:", result.stdout)

特点:

  • 可以捕获输出和错误。
  • 可以设置超时。
  • 可以检查命令的退出状态。

3. subprocess.Popen()

subprocess.Popen()提供了更细粒度的控制,允许执行命令并与之交互。它返回一个Popen对象,可以用于进一步操作。

import subprocess
process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
stdout, stderr = process.communicate()
print("Output:", stdout)
if process.returncode != 0:print("Error:", stderr)

特点:

  • 可以实时获取输出和错误。
  • 可以控制进程的输入、输出和错误流。
  • 可以等待或轮询进程的完成。

4. os.popen()

os.popen()用于执行命令并读取输出。它返回一个文件对象,可以像普通文件一样读取。

with os.popen('ls -l') as stream:print(stream.read())

特点:

  • 简单易用,适用于只读取输出的场景。
  • 不能捕获错误信息。

5. subprocess.check_output()

subprocess.check_output()用于执行命令并获取输出。如果命令返回非零退出状态码,会抛出异常。

from subprocess import check_output
output = check_output(['ls', '-l'], text=True)
print("Output:", output)

特点:

  • 直接获取命令输出。
  • 如果命令失败,会抛出异常,便于错误处理。

6. subprocess.call()

subprocess.call()执行一个命令并等待其完成,返回命令的退出状态码。

import subprocess
status = subprocess.call(['ls', '-l'])
print("Exit status:", status)

特点:

  • 简单易用,只返回退出状态码。
  • 不能捕获输出或错误信息。
    在这里插入图片描述

使用建议

在选择执行 shell 命令的方法时,应根据具体需求来决定使用哪种方法。如果需要捕获输出和错误信息,推荐使用subprocess.run()subprocess.Popen()。如果只是简单地执行命令并获取退出状态,os.system()subprocess.call()可能更合适。

此外,使用这些方法时,还需要注意异常和错误的处理,特别是当命令失败时。subprocess模块因其强大的控制和灵活性,已成为执行 shell 命令的首选方式。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

这篇关于【Python系列】执行 Shell 命令的六种方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1092758

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python虚拟环境与Conda使用指南分享

《Python虚拟环境与Conda使用指南分享》:本文主要介绍Python虚拟环境与Conda使用指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python 虚拟环境概述1.1 什么是虚拟环境1.2 为什么需要虚拟环境二、Python 内置的虚拟环境工具

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部