Python执行系统命令的方法
来源:互联网 发布:网络歌手紫菱个人资料 编辑:程序博客网 时间:2024/05/20 08:26
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
http://www.javaeye.com/topic/406623
转自:http://www.cnblogs.com/xuxm2007/archive/2011/01/17/1937220.html
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- python 执行系统命令的方法
- Python中执行系统命令的方法
- python 中执行系统命令执行的若干方法
- Python中执行系统命令常见的几种方法
- python执行系统命令的方法os.system()
- Python执行Linux系统命令的4种方法
- Android开发--创建Activity 要点、注册
- Android开发 --- 多个Activity,及之间数据传递 Intent
- 填报中级别不固定时的自动计算
- 运用虚拟化架构实现银行运维网络安全的管理
- Android开发--menu使用
- Python执行系统命令的方法
- ajax实例3
- Tomcat配置JNDI提示:org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'oracle
- C#发送邮件三种方法,Localhost,SMTP,SSL-SMTP
- Java实现 SSL双向认证
- jQuery基础教程之强大的选择器(过滤选择器-子元素过滤选择器)
- Xlib 基础概念
- 基于Java Web的文件上传进度显示的一种解决方案
- MySQL远程连接的配置