zoukankan      html  css  js  c++  java
  • Python执行系统命令:使用subprocess的Popen函数

    使用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()









  • 相关阅读:
    VMware安装Centos7超详细过程
    LVS+Keepalived小试牛刀
    Spring入门之AOP篇
    Spring学习笔记及资源
    Spring入门第一例
    Mybatis学习手记(二)
    Mybatis学习手记(一)
    java web 开发入门实例
    关于JAVA编译时找不到自定义包的问题
    Java 学习笔记及资源
  • 原文地址:https://www.cnblogs.com/topplay/p/3860400.html
Copyright © 2011-2022 走看看