使用subprocess的Popen函数执行系统命令
参考:
http://blog.sina.com.cn/s/blog_8f01450601017dlr.html
http://blog.csdn.net/wuwangyingzhong/article/details/6002055
http://www.360doc.com/content/14/0618/15/18227261_387777503.shtml


1、执行shell命令:
Popen函数指定shell=True即可,linux下参数executable将指定程序使用的shell,windows下无须指定。
示例1:在windows下执行cd命令获取当前目录
  1. p2 = Popen('cd',shell=True)

2、执行其他程序


3、指定子进程工作路径:
示例1:
使新建的子进程工作指定的工作目录之下:
  1. import sys,os,subprocess,commands
  2. from subprocess import Popen,PIPE
  3. p2 = Popen('cd',shell=True,stdout=PIPE,cwd='E:\svnworking')
  4. p2.wait()
  5. print "当前目录:%s" %p2.stdout.read()
上述命令使用了cwd,该参数指定了子进程工作目录。这个参数很有用,有时涉及到相对路径的时候必须如果不指定cwd,则程序可能出错。

示例2:
a.py:
  1. p2 = Popen('python c:\b.py',shell=True,stdout=PIPE) #在a.py运行脚本b.py
  2. p2.wait()
  3. print "当前目录:%s" %p2.stdout.read()

b.py
  1. f=open('test.txt','a') #注意这里使用了相对路径
  2. f.close()

当a.py和b.py不在同一个目录的时候,运行a.py肯定报错(找不到指定的文件test.txt)。
原因:因为p2 = Popen('python c:\b.py',shell=True,stdout=PIPE') 创建的子进程与a.py在同一目录下工作,而该目录没有test.py。
解决方法:指定cwd参数。

4、获取Popen的返回值及输出
示例:
  1. # -*- coding: cp936 -*-
  2. #执行另外一个脚本
  3. import sys,os,subprocess,commands
  4. from subprocess import Popen,PIPE
  5. p = Popen('python ' + path + '\getCurPath.py', stdout=PIPE, stderr=PIPE)
  6. p.wait()
  7. if(p.returncode == 0):
  8. print "stdout:%s" %p.stdout.read()





Python执行系统命令:使用subprocess的Popen函数的更多相关文章

  1. Python执行系统命令的方法 os.system(),os.popen(),commands

    os.popen():用python执行shell的命令,并且返回了结果,括号中是写shell命令 Python执行系统命令的方法: https://my.oschina.net/renwofei42 ...

  2. python 执行系统命令模块比较

    python 执行系统命令模块比较 1.os.system模块 仅仅在子终端运行命令,返回状态码,0为成功,其他为失败,但是不返回执行结果 如果再命令行下执行,结果直接打印出来 >>> ...

  3. python执行系统命令后获取返回值的几种方式集合

    python执行系统命令后获取返回值的几种方式集合 今天小编就为大家分享一篇python执行系统命令后获取返回值的几种方式集合,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 第一种情 ...

  4. 转 Python执行系统命令的方法

    传送门 Python执行系统命令的方法 http://www.linux-field.com/?p=15 Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.sys ...

  5. windows linux 使用python执行系统命令并将结果保存到变量

    最近需要用到os.system 发现不能赋值到变量 后查有更新的模块,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使用content ...

  6. Python执行系统命令并获得输出的几种方法

    [root@a upfc]# ./ffmpeg-linux64-v3.3.1 -i a.mp3 ffmpeg version N-86111-ga441aa90e8-static http://joh ...

  7. 使用python执行系统命令——subprocess

     背景:subprocess是python官方推荐调用系统命令的模块 import subprocess subprocess最主要的两个方法/类: # 参数说明:stdin和stdout相当于一个管 ...

  8. Python执行系统命令的方法

    Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 system(command) ...

  9. 执行系统命令,subprocess使用说明

    os.system('ls -l') #只执行命令,不能将结果赋予变量 os.system('mkdir test')  #创建test目录 files = os.popen('ls -l').rea ...

随机推荐

  1. python的列表(二)

    1.遍历整个列表  #for 循环 # >>> name_list['faker', 'dopa', 'gogoing', 'uzi']  >>> for LOL_ ...

  2. php+ajax发起流程和审核流程(以请假为例)

    上一篇随笔中已经提到如何新建流程,那么现在我们就来看一下如何发起一个流程和审核流程~~~ 先说一下思路: (1)登录用session获取到用户的id (2) 用户发起一个流程 注意:需要写申请事由 ( ...

  3. Spark学习资料共享

    链接相关 课件代码:http://pan.baidu.com/s/1nvbkRSt 教学视频:http://pan.baidu.com/s/1c12XsIG 这是最近买的付费教程,对资料感兴趣的可以在 ...

  4. 屌丝技能--转Json(Newtonsoft.Json.dll)

    妈妈再也不用为我转Json而担忧了!! 很简单,没什么好说明的,嗯! public class ShowTablePage<T> where T : class, new() { publ ...

  5. 导入数据到mysql服务器上,报错,以及停止的解决办法

    两次都是因为磁盘不够,这次得以解决: =>下面是可能会用到的命令行: 1.查看磁盘占用大小: df -hl 发现:   从上面看出来,根目录 / 下的东西沾满了  /dev/sda1  但是 / ...

  6. mysql安装报错

    一: -- MySQL 5.5.22Warning: Bison executable not found in PATH-- Configuring done-- Generating done-- ...

  7. 磁盘文件I/O,SSD结构,局部性原理 笔记

    磁盘文件I/O过程 进程向内核发起read scene.dat请求: 内核根据inode获取对应该进程的address space,在address space查找page_cache,如果没有找到, ...

  8. Vue 爬坑之路(二)—— 组件之间的数据传递

    Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...

  9. Webpack 资源管理

    Webpack 资源管理

  10. JavaScript中for循环的使用详解

    or循环是循环最紧凑的形式,并包含有以下三个重要部分组成: 循环初始化计数器的初始值.初始化语句执行循环开始之前. 测试语句,将测试如果给定的条件是真还是假.如果条件为真,那么将要执行的循环中给定的代 ...