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相当于一个管 ...
随机推荐
-
整理:深度学习 vs 机器学习 vs 模式识别
http://www.csdn.net/article/2015-03-24/2824301 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等) http://developer ...
-
安装ClouderaManager以及使用ClouderaManager安装分布式集群的若干细节
目录 前言 整体介绍 分步安装介绍 总结 一.前言 周末干了近四十个小时中间只休息了五个小时终于成功安装了ClouderaManager以及分布式集群,其中各种辛酸无以言表,唯有泪两行. ...
-
MFC窗口重绘
Invalidate()与 UpdateAllViews()有什么分别 Invalidate()是让程序重画窗口. UpdateAllViews()是在DOC/VIEW结构中, 当一个视图的数据改变后 ...
-
使用飞信api接口实现短信发送(只能发送好友)
找了很久才找到一个能用的飞信API接口(http://quanapi.sinaapp.com/fetion.php?u=飞信登录手机号&p=飞信登录密码&to=接收飞信的手机号& ...
-
hdu 1860 统计字符
Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过8 ...
-
HttpURLConnection 下载代码
private int downloadFile(final String apkurl, final String apkname) { Log.e(LOGTAG, "downloadAp ...
-
django模版中配置和使用静态文件方法
1 在项目根路径下创建静态文件目录static: test3 是我的项目名,根目录下面: booktest 是一个应用 static是我建立的静态文件目录(这个名字其实可以叫其他的),静态文件都放在这 ...
-
HTML5中 基本用法及属性 韩俊强的博客
从今天开始更新H5相关学习:希望大家能一起学习,多学习一门语言,多一门乐趣! 了解Html5: Html5基本属性: <!DOCTYPE html> <html lang=" ...
-
第一册:lesson thirty five。
原文: Our village . This is a photograph of our village. Our village is in a valley. It is between to ...
-
(后端)swagger
Swagger 文档提供了一个方法,使我们可以用指定的 JSON 或者 YAML 摘要来描述你的 API,包括了比如 names.order 等 API 信息. 你可以通过一个文本编辑器来编辑 Swa ...