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相当于一个管 ...
随机推荐
- Binding的Source从何而来?
I. Binding to Object 1. Binding data using ObjectDataProvider AC:Let’s say there is a CLR based data ...
- PropertiesUtil 读取配置文件工具类
package org.konghao.basic.util; import java.io.FileInputStream; import java.io.FileNotFoundException ...
- 在类库中使用Session
昨天在做优化网站代码的时候,突发奇想想将页面的代码和业务逻辑代码分离开.就是页面下的.cs文件只用于收集前台上的数据而业务处理都放到一些类库中.可是问题来了,在类库中是无法直接使用Session.在网 ...
- Thread Pool Engine, and Work-Stealing scheduling algorithm
http://pages.videotron.com/aminer/threadpool.htm http://pages.videotron.com/aminer/zip/threadpool.zi ...
- dmalloc 原文 翻译整理
http://blog.csdn.net/cardinal_508/article/details/5553387 L13 从快速入门开始(Quickstart) 这个库是一个文件中所有简化用法中最常 ...
- RFID Reader 线路图收集
This 125 kHz RFID reader http://www.serasidis.gr/circuits/RFID_reader/125kHz_RFID_reader.htm http:// ...
- Codeforces Good bye 2015 B. New Year and Old Property dfs 数位DP
B. New Year and Old Property 题目连接: http://www.codeforces.com/contest/611/problem/B Description The y ...
- 【Hybrid App】Hybrid App开发实战
[引言]近年来随着移动设备类型的变多,操作系统的变多,用户需求的增加,对于每个项目启动前,大家都会考虑到的成本,团队成员, 技术成熟度,时间,项目需求等一堆的因素.因此,开发App的方案已经变得越来越 ...
- Caused by: java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
最近,在android中用代码动态改变某种布局(组件)的高度时,会遇到如题所示的类转换异常.上网查了一下,如下所示: These supply parameters to the parent of ...
- 内存管理和@property的属性
内存管理和@property的属性 目录 对内存管理的理解 Objective C内存管理方式 内存的管理 对象的所有权和内存管理原则 合理解决内存管理带来的问题 自动释放池 @property的属性 ...