前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python中执行系统命令常见的几种方法

Python中执行系统命令常见的几种方法

作者头像
一朵灼灼华
发布2022-08-05 17:08:58
3340
发布2022-08-05 17:08:58
举报

(1) os.system 

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

  import os

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

(2) os.popen 

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

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

   print output.read()

(3)使用模块commands模块

    import commands

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

   print status,output

注意1:在类unix的系统下使用此方法返回的返回值(status)与脚本或命令执行之后的返回值不等,这是因为调用了os.wait()的缘故,

          具体原因就得去了解下系统wait()的实现了。需要正确的返回值(status),只需要对返回值进行右移8位操作就可以了。

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

(4) 使用模块subprocess

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

 Class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, 

                                  stderr=None, preexec_fn=None,  close_fds=True, shell=False, 

                                 cwd=None, env=None, universal_newlines=False, startupinfo=None, 

                              creationflags=0, restore_signals=True, start_new_session=False, pass_fds=())

有丰富的参数可以进行配置,可供我们自定义的选项多,灵活性高。之前我使用os.system的时候遇到文件描述符被子进程继承的问题,后来通过close_fds = False 这个参数来解决的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-09-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档