python调用shell的方法

 更新时间:2013年11月20日 15:55:36   作者:  
这篇文章主要介绍了python调用shell的方法,python调用shell命令的方法有许多种,大家可以参考使用

1.1  os.system(command)

在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这实际上是使用C标准库函数system()实现的。这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。

1.2  os.popen(command,mode)

打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是'r')。如果mode为'r',可以使用此函数的返回值调用read()来获取command命令的执行结果。

1.3  commands.getstatusoutput(command)

使用os. getstatusoutput ()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。

2.1  subprocess.call(["some_command","some_argument","another_argument_or_path"])

subprocess.call(command,shell=True)

2.2  subprocess.Popen(command, shell=True)

如果command不是一个可执行文件,shell=True不可省。
使用subprocess模块可以创建新的进程,可以与新建进程的输入/输出/错误管道连通,并可以获得新建进程执行的返回状态。使用subprocess模块的目的是替代os.system()、os.popen*()、commands.*等旧的函数或模块。
最简单的方法是使用class subprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。

将调用shell的结果赋值给python变量

复制代码 代码如下:

handle = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
print handle.communicate()[0]


在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法一般有这么几个:

1、os.system(command)

2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)

若置syn为wx.EXEC_ASYNC则wx.Excute函数立即返回,若syn=wx.EXEC_SYNC则等待调用的程序结束后再返回。

callback是一个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调用wx.Process.OnTerminate()函数。

os.system()和wx.Execute()都利用系统的shell,执行时会出现shell窗口。如在Windows下会弹出控制台窗口,不美观。下面的两种方法则没有这个缺点。

3、class subprocess.Popen

最简单的用法是:

复制代码 代码如下:

import subprocess

subprocess.Popen(command, shell=True)

如果command不是一个可执行文件,shell=True不可省。

前面三个方法只能用于执行程序和打开文件,不能处理URL,打开URL地址可用webbrowser模块提供的功能。

4、webbrowser.open(url)

调用系统缺省浏览器打开URL地址,如 webbrowser.open('https://www.jb51.net'),也可以利用
webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)

相关文章

  • Python实现将列表拆分为大小为N的块

    Python实现将列表拆分为大小为N的块

    这篇文章主要为大家整理了一些常见的Python实现将列表拆分为大小为N的块的方法,文中的示例代码讲解详细,具有一定的参考价值,有需要的小伙伴可以了解下
    2023-09-09
  • JupyterNotebook 输出窗口的显示效果调整方法

    JupyterNotebook 输出窗口的显示效果调整方法

    这篇文章主要介绍了JupyterNotebook 输出窗口的显示效果调整方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python隐藏类中属性的3种实现方法

    python隐藏类中属性的3种实现方法

    今天小编就为大家分享一篇python隐藏类中属性的3种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实现xml格式转txt格式的示例代码

    Python实现xml格式转txt格式的示例代码

    VOC 的标注是xml格式的,而YOLO是.txt格式,所以要实现VOC数据集转YOLO数据集,只能利用代码实现。所以本文为大家介绍了Python中xml转txt的示例代码,需要的可以参考一下
    2022-03-03
  • Python进程崩溃AttributeError异常问题解决

    Python进程崩溃AttributeError异常问题解决

    这篇文章主要介绍了Python进程崩溃(AttributeError异常)问题解决,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下方法
    2023-06-06
  • 使用Python将PDF文件转存为图片的代码示例

    使用Python将PDF文件转存为图片的代码示例

    因工作中的某些奇葩要求,需要将PDF文件的每页内容转存成按顺序编号的图片,用第三方软件或者在线转换也可以,但批量操作还是Python方便,所以本文给大家介绍了使用Python将PDF文件转存为图片的方法,需要的朋友可以参考下
    2023-09-09
  • jupyter notebook内核启动失败问题及解决方法

    jupyter notebook内核启动失败问题及解决方法

    这篇文章主要介绍了解决jupyter notebook内核启动失败问题,本文给大家介绍了问题原因分析及解决方案,图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • 关于python 读取csv最快的Datatable的用法,你都学会了吗

    关于python 读取csv最快的Datatable的用法,你都学会了吗

    大家都知道Datatable与众不同就是快,还有一点大家需要注意使用Datatable库需要python3.6及以上版本,接下来通过本文给大家介绍了python 读取csv最快的Datatable的用法,需要的朋友可以参考下
    2021-10-10
  • python实现多进程并发控制Semaphore与互斥锁LOCK

    python实现多进程并发控制Semaphore与互斥锁LOCK

    本文主要介绍了python实现多进程并发控制Semaphore与互斥锁LOCK,通过实例来介绍互斥锁和进程并发控制 semaphore的具体使用,感兴趣的同学可以了解一下
    2021-05-05
  • python使用torch随机初始化参数

    python使用torch随机初始化参数

    这篇文章主要介绍了python使用torch随机初始化参数,文章围绕torch随机初始化参数的相关资料展开文章详细内容,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2022-03-03

最新评论