Python执行系统命令的方法
Python中执行系统命令常见方法有两种:
两者均需 import os
(1) os.system
# 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息
system(command) -> exit_status
Execute the command (a string) in a subshell.
# 如果再命令行下执行,结果直接打印出来
1 |
>>> os.system( 'ls' ) |
2 |
04101419778.CHM bash document media py - django video |
3 |
11.wmv books downloads Pictures python |
4 |
all - 20061022 Desktop Examples project tools |
(2) os.popen
# 该方法不但执行命令还返回执行后的信息对象
popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.
例如:
01 |
>>>tmp = os.popen( 'ls *.py' ).readlines() |
02 |
>>>tmp |
03 |
Out[ 21 ]: |
04 |
[ 'dump_db_pickle.py ' , |
05 |
'dump_db_pickle_recs.py ' , |
06 |
'dump_db_shelve.py ' , |
07 |
'initdata.py ' , |
08 |
'__init__.py ' , |
09 |
'make_db_pickle.py ' , |
10 |
'make_db_pickle_recs.py ' , |
11 |
'make_db_shelve.py ' , |
12 |
'peopleinteract_query.py ' , |
13 |
'reader.py ' , |
14 |
'testargv.py ' , |
15 |
'teststreams.py ' , |
16 |
'update_db_pickle.py ' , |
17 |
'writer.py ' ] |
好处在于:将返回的结果赋于一变量,便于程序的处理。
(3) 使用模块subprocess
1 |
>>> import subprocess |
2 |
>>> subprocess.call ([ "cmd" , "arg1" , "arg2" ],shell = True ) |
获取返回和输出:
1 |
import subprocess |
2 |
p = subprocess.Popen( 'ls' , shell = True , stdout = subprocess.PIPE, stderr = subprocess.STDOUT) |
3 |
for line in p.stdout.readlines(): |
4 |
print line, |
5 |
retval = p.wait() |
(4) 使用模块commands模块
1 |
>>> import commands |
2 |
>>> dir (commands) |
3 |
[ '__all__' , '__builtins__' , '__doc__' , '__file__' , '__name__' , 'getoutput' , 'getstatus' , 'getstatusoutput' , 'mk2arg' , 'mkarg' ] |
4 |
>>> commands.getoutput( "date" ) |
5 |
'Wed Jun 10 19:39:57 CST 2009' |
6 |
>>> |
7 |
>>> commands.getstatusoutput( "date" ) |
8 |
( 0 , 'Wed Jun 10 19:40:41 CST 2009' ) |
注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现下面的错误:
1 |
Traceback (most recent call last): |
2 |
File "./test1.py" , line 56, in <module> |
3 |
main() |
4 |
File "./test1.py" , line 45, in main |
5 |
fax.sendFax() |
6 |
File "./mailfax/Fax.py" , line 13, in sendFax |
7 |
os.popen(cmd) |
8 |
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-52: ordinal not in range(128) |
关于本文更多的延伸阅读地址:
http://zh-cn.how-to.mobi/index.php?id=89228
Python执行系统命令的方法的更多相关文章
- Python执行系统命令的方法 os.system(),os.popen(),commands
os.popen():用python执行shell的命令,并且返回了结果,括号中是写shell命令 Python执行系统命令的方法: https://my.oschina.net/renwofei42 ...
- 转 Python执行系统命令的方法
传送门 Python执行系统命令的方法 http://www.linux-field.com/?p=15 Python中执行系统命令常见方法有两种: 两者均需 import os (1) os.sys ...
- Python执行系统命令并获得输出的几种方法
[root@a upfc]# ./ffmpeg-linux64-v3.3.1 -i a.mp3 ffmpeg version N-86111-ga441aa90e8-static http://joh ...
- python 执行系统命令模块比较
python 执行系统命令模块比较 1.os.system模块 仅仅在子终端运行命令,返回状态码,0为成功,其他为失败,但是不返回执行结果 如果再命令行下执行,结果直接打印出来 >>> ...
- 提高python执行效率的方法
python上手很容易,但是在使用过程中,怎么才能使效率变高呢? 下面说一下提高python执行效率的方法,这里只是说一点,python在引入模块过程中提高效率的方法. 例如: 1.我们要使用os模块 ...
- windows linux 使用python执行系统命令并将结果保存到变量
最近需要用到os.system 发现不能赋值到变量 后查有更新的模块,如下: os.system os.spawn* os.popen* popen2.* commands.* 重新使用content ...
- python执行系统命令后获取返回值的几种方式集合
python执行系统命令后获取返回值的几种方式集合 今天小编就为大家分享一篇python执行系统命令后获取返回值的几种方式集合,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 第一种情 ...
- Python执行系统命令:使用subprocess的Popen函数
使用subprocess的Popen函数执行系统命令 参考: http://blog.sina.com.cn/s/blog_8f01450601017dlr.html http://blog.csdn ...
- 使用python执行系统命令——subprocess
背景:subprocess是python官方推荐调用系统命令的模块 import subprocess subprocess最主要的两个方法/类: # 参数说明:stdin和stdout相当于一个管 ...
随机推荐
- erlang: Programming Rules and Conventions。
http://www.erlang.se/doc/programming_rules.shtml#HDR33 http://www.erlang.org/eeps/eep-0008.html
- MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装(转载)
转载地址http://elf8848.iteye.com/blog/630864 下载MyEclipse 8.5 可以通过代理http://www.proxyie.cn/访问MyEclipse的官方网 ...
- Android 深入ViewPager补间动画,实现类京东商城首页广告Banner切换效果
如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 某天看到京东商城首页的滑动广告的Banner,在流动切换的时候有立体的动画效果,感觉很有意思,然后研究了下 ...
- 【MongoDB】mongoimport and mongoexport of data (一)
In the software development, we usually are faced with a common question of exporting or importing d ...
- 【JavaScript】JS的启动机制
DOM Event------------------>触发function() function 自身的调用 主要就是调用function 1.DOM Event 2.调用function
- asp.net负载均衡方案[转]
在前面的几篇文章中,主要谈到了在Discuz!NT中的跨站缓存数据,数据库负载均衡.但如果要实现将产品分布式布置到若干机器,组成集群来共同支撑起整个业务的话,还是有一定问题的(后面会有所介绍).下面先 ...
- 【JSP】JSTL使用core标签总结(不断更新中)
使用core标签 在页面中使用taglib指令指定标签URI和prefix.如: <%@ taglib uri="http://java.sun.com/jsp/jstl/core&q ...
- as3.0 interface接口使用方法
[转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...
- libgo协程库:网络性能完爆ASIO异步模型(-O3测试)
在purecpp社区的github组织中有一个协程库:https://github.com/yyzybb537/libgo 近日有用户找到我,想要了解一下libgo库在网络方面的性能,于是选取已入选标 ...
- css常用知识
1.基本语法规范p {color:#ff0000;background:#ffffff}a.其中"p"称为"选择器"(selectors),指明我们要给&quo ...