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 inrange(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相当于一个管 ...
随机推荐
- DNS与DNS劫持原理、IP、域名、服务器访问浅讲
我们都知道,平常我们所访问的网站,都是与服务器进行数据交互的.但是,浏览器和服务器是分处于不同的计算机上的,那他们是怎样进行通信的呢?今天,我们就来粗浅地聊一聊.不涉及很深的技术原理,只讲大概的流程. ...
- 使用HTML5的十大原因
你难道还没有考虑使用HTML5? 当然我猜想你可能有自己的原因:它现在还没有被广泛的支持,在IE中不好使,或者你就是喜欢写比较严格的XHTML代码.HTML5是web开发世界的一次重大的改变,事实上不 ...
- Jquery 校验文本框只能输入负数、小数、整数
/* umlzhang date:2013-09-12 */ //检验只能输入整数,小数和负数 $(function () { var obj = $(&q ...
- MFC程序中消息以及函数的处理顺序简介[转]
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- Regular Expression--Good parts
匹配URL的正则表达式 <!doctype html><html lang="en"><head> <meta charset=" ...
- linux环境新增用户和所属组
1.查看用户和组信息命令: 1.1 cat /etc/passwd /etc/passwd 存储有关本地用户的信息. 1)username UID到名称的一种映射,用户名 2)passw ...
- Google Chrome浏览器调试功能介绍
作为Web开发人员,我为什么喜欢Google Chrome浏览器 [原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.ht ...
- Flex中实现类似Javascript的confirm box
Javascript是阻塞的,你可以使用confirm()来获取用户的选择,并根据用户的选择结果继续下面的操作. Flex是非阻塞的,在执行过程中没有类似JS中confirm()那种等待用户选择后继续 ...
- WinSock异步IO模型之Select
如果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的. Windows操作系统提供了五种I/O模型,分别是: ■ 选择(select): ■ 异步选择(WSAAsyncSelec ...
- TAxThread - Inter thread message based communication - Delphi
http://www.cybletter.com/index.php?id=3 http://www.cybletter.com/index.php?id=30 Source Code http:// ...