python中如何调用shell 中OS.SYSTEM等方法

转载 2013年06月06日 18:02:41
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.*等旧的函数或模块。
  最简单的方法是使用classsubprocess.Popen(command,shell=True)。Popen类有Popen.stdin,Popen.stdout,Popen.stderr三个有用的属性,可以实现与子进程的通信。
 
将调用shell的结果赋值给python变量
handle =subprocess.Popen(command, shell=True,stdout=subprocess.PIPE)
printhandle.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、classsubprocess.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,wxPython2.5.1运行。
modify:还有一种方式:subprocess.call(*args,**kwargs)

python中如何调用shell 中OS.SYSTEM等方法

python调用shell命令的方法有许多 1.1 os.system(command) 在一个子shell中运行command命令,并返回command命令执行完毕后的退出状态。这实际上是使用...
  • lile1234_show
  • lile1234_show
  • 2013年12月19日 15:59
  • 2141

python使用os.system执行Linux shell命令

使用os.system执行Linux shell 命令
  • zhouzhenhe2008
  • zhouzhenhe2008
  • 2015年12月27日 14:03
  • 1066

python-模块间的导入与os.system('xxx')的shell命令执行

在一个大模块中导入一个小的特定子模块,如在sys大模块中导入sys.path的子模块,其他的sys子模块无法使用 root@kali:~# python Python 2.7.3 (default,...
  • xwbk12
  • xwbk12
  • 2017年05月16日 22:23
  • 376

python调用os.system执行系统命令,中文输出显示乱码

why? # coding=utf-8 #中文注释 import os import time MajorObject = { '/cygdrive/e/eBo...
  • u011804580
  • u011804580
  • 2013年11月19日 20:08
  • 5935

shell调用python脚本,并且向python脚本传递参数

shell中: python test.py $para1 $para2 python中: def main($canshu1, $canshu2)   ..... main(sys.a...
  • ly890700
  • ly890700
  • 2017年02月17日 14:14
  • 4684

python基础之使用os.system来执行系统命令

在工作中经常会需要确定使用的py的版本信息,以便适配更多的系统,达到更大的兼容性。 一般关于python的信息和参数都要调用sys模块,关于操作系统的信息和调用都要使用os模块 所以这次我...
  • liu870915
  • liu870915
  • 2016年07月05日 15:20
  • 380

os.system路径存中有空格

其实没有搞清楚原理是什么,只是把所有答案都试了一遍,发现下面这个是管用的,留个记号 os.system(r'"文件路径"') r单引号双引号,引号顺序反了还不行了...
  • summeryan2011
  • summeryan2011
  • 2017年05月02日 11:36
  • 585

python中os.popen, os.system()区别

直接上个例子吧,注意结果,os.system的结果只是命令执行结果的返回值,执行成功为0: >>> a=os.system('ls') Applications Mo...
  • cbbbc
  • cbbbc
  • 2017年02月09日 16:05
  • 1295

Python execute adb shell command

用Python写些平时开发的辅助脚本还是非常方便的,做为Android开发有碰到用Python执行adb命令的需求,os.system() 可以执行系统命令但是不支持获取输出,再者要考虑到读取中文输出...
  • tp7309
  • tp7309
  • 2017年05月13日 09:31
  • 878

pycharm下 os.system执行命令返回有中文乱码

source = ['C:\\Users\\admin\\Desktop\\pythonLearning'] target_dir = 'C:\\Users\\admin\\Desktop' pri...
  • Wensent_H
  • Wensent_H
  • 2017年08月11日 10:03
  • 1878
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python中如何调用shell 中OS.SYSTEM等方法
举报原因:
原因补充:

(最多只允许输入30个字)