Python如何调用系统命令?subprocess模块解析

推荐使用subprocess模块执行系统命令。在python中,执行系统命令最推荐的方式是使用标准库中的subprocess模块,其功能强大且灵活,能替代旧方法如os.system()。1. subprocess.run()是从python 3.5开始的首选方式,适合基础场景,例如运行命令并捕获输出需用列表传参、capture_output=true和text=true。2. 命令执行成功与否可通过returncode属性判断,0表示成功,非零为错误码;check=true可在失败时抛出异常。3. 需要精细控制输入输出流或交互时应使用popen类,支持双向通信及持续交互,并可配置stdin、stdout、cwd等选项。4. 使用shell=true时需注意安全问题,尤其处理用户输入时防范命令注入风险。5. 跨平台兼容性方面,subprocess本身跨平台但命令可能不兼容,建议避免硬编码平台相关命令,优先使用python内置模块实现文件操作等功能。掌握subprocess.run()能满足大部分需求,复杂场景再使用popen深入处理。

Python如何调用系统命令?subprocess模块解析

在Python中执行系统命令,最推荐的方式是使用标准库中的subprocess模块。它功能强大、灵活,并且能很好地替代旧的如os.system()或os.spawn*等方法。如果你需要在Python脚本中运行外部命令并获取结果,那subprocess就是你要找的工具。

Python如何调用系统命令?subprocess模块解析

一、subprocess.run:最常用的基础方法

从Python 3.5开始,subprocess.run()成为调用系统命令的首选方式。它的接口清晰,适合大多数基础场景。

Python如何调用系统命令?subprocess模块解析

例如,想运行一个简单的命令,比如查看当前目录下的文件:

立即学习“Python免费学习笔记(深入)”;

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

这里有几个关键点:

Python如何调用系统命令?subprocess模块解析命令参数要以列表形式传入,每个参数单独作为一个元素。capture_output=True表示捕获标准输出和标准错误。text=True会将输出转为字符串而不是字节流(Python 3.7+)。result.stdout是你想要的标准输出内容。

如果只是运行命令而不需要处理输出,可以不加capture_output。

二、获取命令返回值和状态码

很多时候你不仅想知道命令输出了什么,还想了解它是否成功执行。这时就要看returncode属性。

比如运行一个不存在的命令:

res = subprocess.run(['not_a_real_cmd'], capture_output=True, text=True)print(res.returncode)  # 返回非0表示出错print(res.stderr)      # 通常会有错误信息

常见情况:

returncode 为 0 表示成功非零值通常是错误码,不同命令含义不同

如果你想在命令失败时直接抛出异常,可以加上参数check=True,这样一旦命令执行失败就会触发CalledProcessError异常。

三、更复杂的交互:Popen类

当你需要更精细地控制子进程输入输出流,或者需要与进程进行持续交互时,应该使用subprocess.Popen类。

比如,你可以一边写入输入流,一边读取输出流:

proc = subprocess.Popen(['grep', 'hello'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True)stdout, stderr = proc.communicate('hello worldnhi therenhello again')print(stdout)

这个例子中我们手动向grep命令传入了一些文本,并得到了匹配的结果。这种方式非常适合自动化测试、长时间运行的子进程或需要双向通信的场景。

一些常见配置选项:

stdin / stdout / stderr:可设置为PIPE、文件描述符或DEVNULLshell=True:允许通过shell执行命令(注意安全问题)cwd:指定子进程的工作目录env:自定义环境变量

⚠️ 使用shell=True要小心,尤其是在处理用户输入的时候,容易引发命令注入风险。

四、跨平台兼容性注意事项

虽然subprocess本身是跨平台的,但实际执行的命令可能不是。例如,在Windows上常用的命令像dir、copy等在Linux下并不适用。

建议:

尽量避免硬编码平台相关命令如果必须区分平台,可以用sys.platform判断操作系统类型对于文件操作等任务,优先使用Python内置的模块(如shutil)

另外,Windows下路径中包含空格时要特别注意引号处理,否则很容易导致命令执行失败。

基本上就这些。掌握subprocess.run()已经能满足大部分需求,遇到复杂场景再深入使用Popen即可。这模块看似简单,但细节很多,稍不注意就容易踩坑。

以上就是Python如何调用系统命令?subprocess模块解析的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1364008.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
高效合并多个NumPy NPZ文件教程
上一篇 2025年12月14日 03:44:45
怎样用Python实现数据可视化—Plotly交互式图表指南
下一篇 2025年12月14日 03:44:54

相关推荐

  • linux shell命令if怎么写

    linux shell命令if怎么写linux shell命令if怎么写linux shell命令if怎么写linux shell命令if怎么写

    Linux Shell 中的 if 命令通过检查条件来执行特定命令。条件可以是文件存在、字符串比较或布尔表达式。如果条件为真,则执行 then 后面的命令;否则,执行 fi 后面的命令。 Linux Shell 命令 if 的用法 if 语句的语法 `if [ 条件 ]; then 命令 fi` 其…

    2026年9月27日 • 用户投稿
    000
  • sublime许可证密钥是什么_sublime正版激活密钥获取方式

    sublime许可证密钥是什么_sublime正版激活密钥获取方式sublime许可证密钥是什么_sublime正版激活密钥获取方式sublime许可证密钥是什么_sublime正版激活密钥获取方式sublime许可证密钥是什么_sublime正版激活密钥获取方式

    Sublime Text可免费试用但官方建议购买授权。需通过官网支付99美元获取正版密钥,激活后去除提醒且支持多设备。网络流传密钥有封禁与安全风险,不推荐使用。购买的许可证永久有效,适用于当前大版本,新版本可能需额外付费。 Sublime Text 是一款广受欢迎的代码编辑器,以其轻量、快速和强大的…

    2026年9月27日 • 用户投稿
    200
  • 抖音直播红包怎么发?直播间怎么替主播发红包

    抖音直播已经成为短视频领域的焦点,吸引了众多商家和网红参与,争夺流量。作为直播互动的重要工具之一,红包不仅能够吸引粉丝的关注,还能显著提升直播间的互动氛围。本文将详细讲解抖音直播中红包的发放方法,帮助您轻松吸引粉丝并提高互动体验。 一、抖音直播红包发放流程 申请红包权限 您需要首先申请开通抖音直播红…

    2026年9月27日
    000
  • 华为 10 月新品计划曝光 nova 13 领衔 还有平板和手表

    华为 10 月新品计划曝光 nova 13 领衔 还有平板和手表华为 10 月新品计划曝光 nova 13 领衔 还有平板和手表华为 10 月新品计划曝光 nova 13 领衔 还有平板和手表华为 10 月新品计划曝光 nova 13 领衔 还有平板和手表

    9 月 27 日,有数码博主爆料称,华为将会在 10 月带来一系列新产品,其中便包括大家期待已久的 nova 13 系列。 华为 nova 13 系列渲染图 该博主发文称:“10 月新品计划来了,第一波感觉新品不多:ML nova 13 系列;MatePad 2024,也就是图中这款的迭代;绿野传奇…

    2026年9月27日 • 用户投稿
    100
  • linux集群ddos怎么使用

    linux集群ddos怎么使用linux集群ddos怎么使用linux集群ddos怎么使用linux集群ddos怎么使用

    使用 Linux 集群进行 DDoS 攻击需要五个步骤:准备集群、选择攻击工具、设置攻击目标、分布式攻击和监控攻击。这些攻击通过向目标发送大量流量使其不堪重负,可能导致法律后果和损害目标的声誉。防御 DDoS 攻击需要多层防御措施。 如何使用 Linux 集群进行 DDoS 攻击 DDoS(分布式拒…

    2026年9月27日 • 用户投稿
    100
  • win10照片查看器怎么调出来_Win10经典照片查看器恢复方法

    win10照片查看器怎么调出来_Win10经典照片查看器恢复方法win10照片查看器怎么调出来_Win10经典照片查看器恢复方法win10照片查看器怎么调出来_Win10经典照片查看器恢复方法win10照片查看器怎么调出来_Win10经典照片查看器恢复方法

    首先通过注册表文件或手动修改注册表关联经典照片查看器,再通过“打开方式”设置其为默认程序,即可恢复Windows 10中经典照片查看器的使用功能。 如果您发现Windows 10系统中的经典照片查看器无法通过常规方式打开,这通常是因为系统默认将“照片”应用设置为图片的默认打开程序。以下是恢复经典照片…

    2026年9月27日 • 用户投稿
    200
  • mysql中的asc是什么意思 mysql排序asc用法解析

    在mysql中,asc是指升序排序。1. asc代表”ascending”,用于将查询结果按指定列从小到大排序。2. 适用于数字、字符串和日期,字符串按字典顺序,日期按时间顺序。3. 使用索引可以优化排序性能。使用asc可以有效组织和展示数据,但需注意优化和调试。 在MySQ…

    2026年9月27日
    100
  • windows怎么查看系统还原点占用的空间 windows系统还原点空间占用查看方法

    首先通过系统属性中的系统保护选项卡查看C盘还原点占用空间,其次使用PowerShell命令vssadmin list shadowstorage获取卷影副本总占用,最后通过任务计划程序检查SystemRestore任务频率以评估存储影响。 如果您希望了解Windows系统中系统还原点所占用的磁盘空间…

    2026年9月27日
    100
  • linux怎么查看进程状态

    linux怎么查看进程状态linux怎么查看进程状态linux怎么查看进程状态linux怎么查看进程状态

    答案: 通过使用 ps、top、pstree、cat /proc/[PID]/status 等命令,可以在 Linux 中查看进程状态。ps 命令可显示进程的基本信息,包括 PID 和 CPU 使用率。top 命令提供一个交互式界面,持续更新进程信息,如 CPU 使用率和内存使用率。pstree 命…

    2026年9月27日 • 用户投稿
    000
  • Perplexity AI如何进行学术不端检测 Perplexity AI论文抄袭分析

    Perplexity AI如何进行学术不端检测 Perplexity AI论文抄袭分析Perplexity AI如何进行学术不端检测 Perplexity AI论文抄袭分析Perplexity AI如何进行学术不端检测 Perplexity AI论文抄袭分析Perplexity AI如何进行学术不端检测 Perplexity AI论文抄袭分析

    Perplexity AI 可以作为一种辅助工具,帮助用户对文本进行初步的学术不端分析,尤其是查找与特定文本片段相关的已知来源。 本文将指导您如何利用 Perplexity AI 的搜索和信息整合能力,来帮助您分析论文或文本的潜在抄袭风险。我们将通过分步骤的方式,详细讲解如何输入待分析的文本、如何提…

    2026年9月27日 • 用户投稿
    000
  • 双系统电脑中,其中一个系统感染病毒,会传染给另一个吗?

    双系统电脑中,其中一个系统感染病毒,会传染给另一个吗?双系统电脑中,其中一个系统感染病毒,会传染给另一个吗?双系统电脑中,其中一个系统感染病毒,会传染给另一个吗?双系统电脑中,其中一个系统感染病毒,会传染给另一个吗?

    双系统中病毒通常不会直接传染另一系统,因运行时隔离使病毒难以跨平台执行。1. 病毒无法在非目标系统运行,如Windows病毒不能在Linux执行;2. 共享分区可能成为传播桥梁,若被感染文件存于共享区,切换系统后可能被触发;3. UEFI/BIOS或启动加载器遭攻击可影响双系统,但极为罕见;4. 防…

    2026年9月27日 • 用户投稿
    100
  • windows怎么进入bios设置_进入BIOS设置操作指南

    windows怎么进入bios设置_进入BIOS设置操作指南windows怎么进入bios设置_进入BIOS设置操作指南windows怎么进入bios设置_进入BIOS设置操作指南windows怎么进入bios设置_进入BIOS设置操作指南

    进入BIOS的方法包括:通过电源菜单按Shift+重启进入UEFI设置;2. 通过系统设置中的恢复选项启动至UEFI固件设置;3. 开机时按下F2、F10或Delete等厂商指定功能键;4. 若因快速启动导致按键失效,需先在电源选项中禁用快速启动后再使用功能键进入。 如果您需要调整计算机的硬件配置或…

    2026年9月27日 • 用户投稿
    100
  • Claude 接管人类电脑 12 小时:学会摸鱼,敲着敲着代码看风景去了

    Claude 接管人类电脑 12 小时:学会摸鱼,敲着敲着代码看风景去了Claude 接管人类电脑 12 小时:学会摸鱼,敲着敲着代码看风景去了Claude 接管人类电脑 12 小时:学会摸鱼,敲着敲着代码看风景去了Claude 接管人类电脑 12 小时:学会摸鱼,敲着敲着代码看风景去了

    新版 claude 3.5 可以像人一样使用计算机,可把咱人类给兴奋坏了! 毕竟,这意味着新竞赛的开始:AI 不再只盯着对话和生成能力,更强调执行和操作。 不到 12 小时,激动的网友们已经纷纷贡献出自己是怎么看着 Claude 玩电脑的。 在 Anthropic 的发布公告中,还有这样一段引起了大…

    2026年9月27日 • 用户投稿
    100
  • windows怎么设置家长控制_家庭安全功能设置教程

    windows怎么设置家长控制_家庭安全功能设置教程windows怎么设置家长控制_家庭安全功能设置教程windows怎么设置家长控制_家庭安全功能设置教程windows怎么设置家长控制_家庭安全功能设置教程

    通过Windows家庭安全功能可管理家庭成员的设备使用,首先创建家庭组并添加成员,随后设置屏幕使用时间限制、应用与游戏访问权限、网页浏览过滤,并定期查看活动报告以优化管控策略。 如果您希望管理家庭成员在Windows设备上的使用时间、应用访问权限或网页浏览内容,可以通过Windows内置的家庭安全功…

    2026年9月27日 • 用户投稿
    200
  • sublime怎么设置git为默认的core.editor_sublime设置Git默认编辑器方法

    sublime怎么设置git为默认的core.editor_sublime设置Git默认编辑器方法sublime怎么设置git为默认的core.editor_sublime设置Git默认编辑器方法sublime怎么设置git为默认的core.editor_sublime设置Git默认编辑器方法sublime怎么设置git为默认的core.editor_sublime设置Git默认编辑器方法

    首先确认Sublime Text已添加到系统路径并可通过subl命令启动,然后运行git config –global core.editor “subl -n -w”将其设为默认编辑器,最后通过git config –get core.editor验…

    2026年9月27日 • 用户投稿
    100
  • 小红书网页版怎么兼容浏览器_小红书网页版浏览器兼容性设置

    小红书网页版怎么兼容浏览器_小红书网页版浏览器兼容性设置小红书网页版怎么兼容浏览器_小红书网页版浏览器兼容性设置小红书网页版怎么兼容浏览器_小红书网页版浏览器兼容性设置小红书网页版怎么兼容浏览器_小红书网页版浏览器兼容性设置

    小红书网页版兼容浏览器需更新浏览器至最新版本,清除缓存与Cookies,关闭干扰插件,并在无痕模式下测试;使用双核浏览器时应切换至极速模式,确保文档模式为标准模式,启用HTML5、JavaScript、WebGL及硬件加速;同时优化网络环境,添加信任站点,确保权限授权正常。 小红书网页版怎么兼容浏览…

    2026年9月27日 • 用户投稿
    300
  • 控制 JScrollPane 滚动条自动更新行为详解

    控制 JScrollPane 滚动条自动更新行为详解控制 JScrollPane 滚动条自动更新行为详解控制 JScrollPane 滚动条自动更新行为详解控制 JScrollPane 滚动条自动更新行为详解

    本教程将深入探讨如何有效控制 JScrollPane 的滚动条自动更新行为,特别是在内容动态变化时保持滚动条位置不变。通过设置滚动条策略为 NEVER,开发者可以阻止 JScrollPane 自动调整其水平或垂直滚动条的值,从而实现对滚动行为的精确控制,避免不必要的UI跳动,提升用户体验。 JScr…

    2026年9月27日 • 用户投稿
    100
  • 多模态AI如何处理工业CT扫描 多模态AI三维重建技术

    多模态AI如何处理工业CT扫描 多模态AI三维重建技术多模态AI如何处理工业CT扫描 多模态AI三维重建技术多模态AI如何处理工业CT扫描 多模态AI三维重建技术多模态AI如何处理工业CT扫描 多模态AI三维重建技术

    工业CT扫描能够提供物体内部结构的详细二维切片图像,但这些二维数据难以直观理解复杂的内部三维结构。传统的处理方法可能效率低下或难以应对数据中的噪声和伪影。多模态AI技术提供了一种强大的解决方案,它能够整合并分析来自CT扫描的丰富信息,从而实现高精度、高效率的三维重建。本文将介绍多模态AI如何处理工业…

    2026年9月27日 • 用户投稿
    100
  • linux查看进程是哪个程序

    linux查看进程是哪个程序linux查看进程是哪个程序linux查看进程是哪个程序linux查看进程是哪个程序

    使用 Linux 命令查看进程对应的程序:使用 “ps” 命令:ps -e -o comm=,显示所有进程的命令名称。使用 “/proc” 文件系统:cat /proc/PID/cmdline,其中 “PID” 是进程 ID,显…

    2026年9月27日 • 用户投稿
    100
  • 拼多多眼药水为啥那么便宜?这类商品有质量保证吗?拼多多眼药水便宜50%的秘密!是套路还是真划算?医生教你3招验真伪!

    拼多多眼药水为啥那么便宜?这类商品有质量保证吗?拼多多眼药水便宜50%的秘密!是套路还是真划算?医生教你3招验真伪!拼多多眼药水为啥那么便宜?这类商品有质量保证吗?拼多多眼药水便宜50%的秘密!是套路还是真划算?医生教你3招验真伪!拼多多眼药水为啥那么便宜?这类商品有质量保证吗?拼多多眼药水便宜50%的秘密!是套路还是真划算?医生教你3招验真伪!拼多多眼药水为啥那么便宜?这类商品有质量保证吗?拼多多眼药水便宜50%的秘密!是套路还是真划算?医生教你3招验真伪!

    一、拼多多眼药水价格低廉的三大核心原因 1. 供应链扁平化降低流通成本 拼多多实行“厂家直供+平台直营”模式,直接与药品生产商合作。相比传统销售链路中多层经销商不断加价,这种精简中间环节的供应方式可减少15%至30%的流通费用。 2. 平台补贴政策持续发力 依托百亿补贴专项支持,平台对医疗健康品类进…

    2026年9月27日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信