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相当于一个管 ...
随机推荐
- Left join 中On和Where的作用范围
SQL语句如下: SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.id = 表2.id AND 表2.Name != 'ff'WHERE 表1.NAME != 'aa' Lef ...
- git/github 使用
原文:http://www.cnblogs.com/fnng/archive/2011/08/25/2153807.html git/github学习笔记 Posted on 2011-08-25 2 ...
- 实现带查询功能的Combox控件
前言 ComBox 还可以实现查询功能,通过设置 ComBox 控件的 AutoCompleteSource 属性和 AutoCompleteMode 属性,可以实现从 Combox 控件中查询已存在 ...
- MyEclipse使用总结——使用MyEclipse打包带源码的jar包
平时开发中,我们喜欢将一些类打包成jar包,然后在别的项目中继续使用,不过由于看不到jar包里面的类的源码了,所以也就无法调试,要想调试,那么就只能通过关联源代码的形式,这样或多或少也有一些不方便,今 ...
- Android多线程研究(1)——线程基础及源代码剖析
从今天起我们来看一下Android中的多线程的知识,Android入门easy,可是要完毕一个完好的产品却不easy,让我们从线程開始一步步深入Android内部. 一.线程基础回想 package ...
- nslookup 查询IPv6
> nslookup> set type=AAAA > ipv6 domain name (ipv6.google.com, time.buptnet.edu.cn)
- 转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现
C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. ...
- CSS 强制换行和禁止换行学习
强制换行 1.word-break: break-all; 只对英文起作用,以字母作为换行依据. 2.word-wrap: break-word; 只对英文起作 ...
- 支付宝api指南
tyle="margin:20px 0px 0px; line-height:26px; font-family:Arial"> 在这些服务中,服务类型大致可以分为以下几类: ...
- Out of resources when opening file 错误解决
mysqldump: Got error: 23: Out of resources when opening file ‘./mydb/tax_calculation_rate_title.MYD’ ...