Python执行系统命令的方法
来源:互联网 发布:linux more查找字符串 编辑:程序博客网 时间:2024/05/20 09:47
http://www.linux-field.com/?p=15
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
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- Python执行系统命令的方法
- python 执行系统命令的方法
- Python中执行系统命令的方法
- python 中执行系统命令执行的若干方法
- Python中执行系统命令常见的几种方法
- python执行系统命令的方法os.system()
- Python执行Linux系统命令的4种方法
- Windows DOS窗体下Oracle 数据库的导入导出命令
- iOS:NSCoder的方法decodeRectForKey:
- 智能手机、平板电脑与GPS定位精度
- Bloom Filter算法
- iOS:NSCoder的方法decodeSize
- Python执行系统命令的方法
- hust-Integer Numbers
- linux命令学习笔记(2)——mkdir,rm,rmdir命令
- Android里merge和include标签的使用
- FusionCharts参数的详细说明
- VIM
- iOS:NSCoder的方法decodeSizeForKey:
- perl基础知识05【数据流控制】
- Win32学习笔记——进程