使用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命令获取当前目录
p2 = Popen('cd',shell=True)
2、执行其他程序
3、指定子进程工作路径:
示例1:
使新建的子进程工作指定的工作目录之下:
import sys,os,subprocess,commands
from subprocess import Popen,PIPE
p2 = Popen('cd',shell=True,stdout=PIPE,cwd='E:\svnworking')
p2.wait()
print "当前目录:%s" %p2.stdout.read()
上述命令使用了cwd,该参数指定了子进程工作目录。这个参数很有用,有时涉及到相对路径的时候必须如果不指定cwd,则程序可能出错。
示例2:
a.py:
p2 = Popen('python c:\b.py',shell=True,stdout=PIPE) #在a.py运行脚本b.py
p2.wait()
print "当前目录:%s" %p2.stdout.read()
b.py
f=open('test.txt','a') #注意这里使用了相对路径
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的返回值及输出
示例:
# -*- coding: cp936 -*-
#执行另外一个脚本
import sys,os,subprocess,commands
from subprocess import Popen,PIPE
p = Popen('python ' + path + '\getCurPath.py', stdout=PIPE, stderr=PIPE)
p.wait()
if(p.returncode == 0):
print "stdout:%s" %p.stdout.read()
Python执行系统命令的方法 os.system(),os.popen(),commands
os.popen():用python执行shell的命令,并且返回了结果,括号中是写shell命令 Python执行系统命令的方法: https://my.oschina.net/renwofei42 ...
python 执行系统命令模块比较
python 执行系统命令模块比较 1.os.system模块 仅仅在子终端运行命令,返回状态码,0为成功,其他为失败,但是不返回执行结果 如果再命令行下执行,结果直接打印出来 >>> ...
python执行系统命令后获取返回值的几种方式集合
python执行系统命令后获取返回值的几种方式集合 今天小编就为大家分享一篇python执行系统命令后获取返回值的几种方式集合,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 第一种情 ...
转 Python执行系统命令的方法
传送门 Python执行系统命令的方法 http://www.linux-field.com/?p=15 Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.sys ...
windows linux 使用python执行系统命令并将结果保存到变量
最近需要用到os.system 发现不能赋值到变量 后查有更新的模块,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使用content ...
Python执行系统命令并获得输出的几种方法
[root@a upfc]# ./ffmpeg-linux64-v3.3.1 -i a.mp3 ffmpeg version N-86111-ga441aa90e8-static http://joh ...
使用python执行系统命令——subprocess
背景:subprocess是python官方推荐调用系统命令的模块 import subprocess subprocess最主要的两个方法/类: # 参数说明:stdin和stdout相当于一个管 ...
Python执行系统命令的方法
Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 system(command) ...
执行系统命令,subprocess使用说明
os.system('ls -l') #只执行命令,不能将结果赋予变量 os.system('mkdir test') #创建test目录 files = os.popen('ls -l').rea ...
随机推荐
Use Spring transaction to simplify Hibernate session management
Spring对Hibernate有很好的支持 DataSource ->SessionFactory-> HibernateTranscationManagerHibernate中通 ...
Redis的使用模式之计数器模式实例
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/123.html?1455853785 Redis 是目前 NoSQL 领域 ...
【Linux】——sleep无法正常休眠
最近在开发项目的时候遇到一个问题,当使用 sleep(2) 的时候,程序居然没有按照指定的时间去休眠,但是连续执行两次 sleep(2) 的时候,程序可以正常的休眠 2 秒.真是见鬼了.最后查看了以下 ...
微信JS-SDK应用DEMO
首先需要将以下函数写入TinkPHP的公用function.php文件中以便调用 // 基于ThinkPHP /** * php curl 请求链接 * 当$post_data为空时使用GET方式发送 ...
MySQL AUTO_INCREMENT 简介
可使用复合索引在同一个数据表里创建多个相互独立的自增序列,具体做法是这样的:为数据表创建一个由多个数据列组成的PRIMARY KEY OR UNIQUE索引,并把AUTO_INCREMENT数据列包括 ...
java中 try return finally return(转)
finally块里面的代码一般都是会执行的,除非执行 System.exit(int),停止虚拟机,断电. 1.若try代码块里面有return ,假设要return 的值 是A,A为基本类型或者被f ...
php数组的使用
<?php echo "
--------普通数组--------"; $arr1 = array(1,2,3,4); print_r ...
EOS开发环境搭建
EOS开发环境搭建 在上一篇文章中,我们已经了解了EOS以及他的创始人Daniel Larimer的故事,本次为大家带来的是关于EOS开发环境搭建的内容.首先 ...
pdfjs预览pdf文件的两种方式(可复制)
1.以图片形式进行展示: version:采用1.x版本,2.0版本会有字体显示不完整的问题:参考 这里使用1.8.170