`
michael_paul
  • 浏览: 173429 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

python中如何调用shell

 
阅读更多
zzfrom: http://hi.baidu.com/yss1983/blog/item/a219de52d453ec0d367abe01.html

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.popen()函数执行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('http://www.google.com'),也可以利用
     webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。
以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。
modify:还有一种方式:subprocess.call(*args, **kwargs)


分享到:
评论

相关推荐

    Python调用shell命令常用方法(4种)

    ### Python调用Shell命令的四种常见方法 #### 方法一:使用`os`模块的`system`方法 在Python中,`os`模块提供了一系列与操作系统交互的接口,其中包括`system`函数,它允许我们直接执行Shell命令。此方法简单易用...

    python调用shell命令

    ### Python调用Shell命令知识点详解 #### 一、引言 在进行系统自动化运维或脚本编程时,经常需要从Python脚本中调用Shell命令来执行特定任务,如文件管理、网络操作等。本文将详细介绍如何使用Python来调用Shell...

    在python 中实现运行多条shell命令

    除了直接在Python中执行多条命令外,还可以将这些命令写入一个Shell脚本文件(例如`.sh`文件),然后通过Python调用该脚本。 ```bash #!/bin/bash cd ../ ls ``` 保存为`run_commands.sh`,并在Python中调用: ``...

    python调用shell脚本

    这个主题,"python调用shell脚本",是Python开发者在进行系统运维或服务器管理时经常遇到的情景。下面我们将深入探讨如何在Python中调用shell脚本,以及相关的知识点。 首先,Python内置的`os`模块提供了一个`...

    python shell

    在Python Shell中,我们可以快速地测试函数、查看变量值,或者进行一些简单的计算,极大地提高了开发效率。 Python并发处理主要涉及多线程(threading模块)、多进程(multiprocessing模块)以及异步IO(asyncio...

    python IDLE shell 中文界面

    在描述中,博主指出他们使用的Python版本是3.8,这意味着这个方法可能适用于Python 3.8版本。 实现IDLE中文界面的步骤如下: 1. 首先,你需要找到一个包含中文语言包的Python安装。这通常可以在Python的国际化版本...

    python中利用adb shell 控制手机,完美解决中文输入问题

    总结来说,这篇博文的核心在于使用Python和ADB工具解决安卓设备上的中文输入问题,通过发送shell命令和模拟按键事件,或者借助特定的输入法应用,来实现自动化过程中的中文输入控制。这种方法对于进行自动化测试、...

    Python-使用Python和Shell编写的持续集成系统

    标题 "Python-使用Python和Shell编写的持续集成系统" 暗示了这是一个关于利用Python和Shell脚本创建持续集成(Continuous Integration, CI)系统的项目。持续集成是一种软件开发实践,其中开发人员频繁将他们的代码...

    python编写shell脚本

    通过上述内容我们可以看出,使用 Python 编写 Shell 脚本不仅能够提高代码的可读性和可维护性,还能充分利用 Python 强大的库支持来完成更复杂的任务。无论是简单的文件操作还是复杂的系统管理任务,Python 都能提供...

    干货:Jenkins Pipeline调用shell、python、java、groovy脚本的正确使用姿势.doc

    Jenkins Pipeline 调用 shell、python、java、groovy 脚本的正确使用姿势 Jenkins Pipeline 是一个强大的自动化工具,可以帮助开发者自动化构建、测试和部署流程。在设计 Pipeline 脚本的过程中,经常会遇到调用...

    python 执行shell命令并将结果保存的实例

    在软件开发和系统管理中,经常需要从Python程序中调用系统的shell命令,并将这些命令的输出用作进一步的处理。本文将详细介绍如何使用Python标准库中的subprocess模块来执行shell命令,并将命令的执行结果保存到字符...

    python shell 用法

    3. 使用变量:在Python Shell中,可以声明和使用变量,例如`x = 5`,然后`print(x)`将输出变量的值。 4. 运算符和数据类型:你可以尝试各种运算符,如加减乘除(+,-,*,/),以及比较运算符(==,!=,<,>)。...

    Python 运行 shell 获取输出结果的实例

    `shell=True`使得可以使用shell语法(如管道、重定向)。 4. **第三方库sh**:`sh`是一个非常方便的库,使得在Python中调用shell命令更加直观。例如,`from sh import ifconfig`可以直接调用`ifconfig`命令,而无需...

    Python-用busybox加持的功能更加强大的adbshell不需要root

    BusyBox是一个开源项目,它集成了许多常见的Linux实用程序,如ls、cp、mv等,这些在标准的ADB Shell中可能不包含。通过将BusyBox安装到Android设备上,我们可以访问更多Linux命令,进而扩展ADB Shell的能力。这个...

    python邮件反弹shell

    使用python反弹shell,根据邮件确定反弹地址

    python中执行shell的两种方法总结

    本文将总结两种在Python中执行Shell命令的方法:一种是使用已经废弃的`commands`模块,另一种是使用现在推荐的`subprocess`模块。 首先,我们来看第一种方法:使用`commands`模块。这个模块在旧版本的Python中被...

    Python-何用Python代替Bash脚本指南

    然而,随着Python的普及和功能增强,越来越多的开发者开始考虑使用Python来替代Bash脚本。Python提供了更强大的数据处理能力、更好的可读性和维护性,以及丰富的第三方库支持。下面,我们将深入探讨为何以及如何用...

    shell脚本调用python脚本,并传参

    在IT领域,尤其是在系统管理和自动化任务执行中,`Shell`脚本和`Python`脚本经常结合使用。`Shell`脚本擅长于处理系统级别的任务,如文件操作、进程管理等,而`Python`则提供了更为强大的数据处理和逻辑控制功能。本...

    GstreamerCodeSnippets, 在C python 和 shell ( gst启动) 中,Gstreamer代码 Fragment.zip

    GstreamerCodeSnippets, 在C python 和 shell ( gst启动) 中,Gstreamer代码 Fragment GstreamerCodeSnippets描述C 。python 。Rust 和 shell ( gst启动) 中的Gstreamer代码 Fragment 。其他源 GStreamer文档语言:...

    python中执行shell命令的几个方法小结.docx

    ### Python中执行Shell命令的方法小结 在进行自动化运维、数据处理或系统管理时,我们经常需要在Python脚本中执行Shell命令。Python提供了多种方式来执行这些命令,每种方式都有其特点和适用场景。下面详细介绍三种...

Global site tag (gtag.js) - Google Analytics