Python执行系统命令的方法

Python中执行系统命令常见方法有两种:


两者均需 import os

(1) os.system

# 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息

system(command) -> exit_status
Execute the command (a string) in a subshell.

# 如果再命令行下执行,结果直接打印出来

(2) os.popen

# 该方法不但执行命令还返回执行后的信息对象

popen(command [, mode='r' [, bufsize]]) -> pipe
Open a pipe to/from a command returning a file object.

例如:

>>> tmp = os.popen('ls -l').readlines()

>>> for a in tmp :
...     print a
...     
... 
total 32
-rw-rw-r-- 1 xueqy xueqy 1183  2月 17 19:53 auto_upload.sh
-rw-rw-r-- 1 xueqy xueqy    0  2月 22 19:46 noLoadmedia_2.txt
-rw-rw-r-- 1 xueqy xueqy 1050  2月 19 13:44 python_readnoloadpdf.py
-rw-rw-r-- 1 xueqy xueqy 1163  2月 19 15:11 python_readnoloadpdf tosql.py
-rw-rw-r-- 1 xueqy xueqy 2990  2月 22 19:45 python_readnoloadpdftosql.py
-rw-rw-r-- 1 xueqy xueqy 1168  2月  4 10:39 python_spelling.py
-rw-rw-r-- 1 xueqy xueqy  749  2月  1 09:33 readAndWrite.py
-rw-rw-r-- 1 xueqy xueqy  529  1月  8 20:28 readDirs.py
-rw-rw-r-- 1 xueqy xueqy  899  2月  4 11:31 re.py

好处在于:将返回的结果赋于一变量,便于程序的处理。


(3)  使用模块subprocess

import subprocess

subprocess.call (["cmd""arg1""arg2"],shell=True)

获取返回和输出

import subprocess

= subprocess.Popen('ls', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)


for line in p.stdout.readlines():

print line

retval = p.wait()

(4)  使用模块commands模块

>>> import commands
>>> dir(commands)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'getoutput', 'getstatus', 'getstatusoutput', 'mk2arg', 'mkarg']
>>> commands.getoutput('date')
'2016\xe5\xb9\xb4 02\xe6\x9c\x88 22\xe6\x97\xa5 \xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80 21:02:12 CST'
>>> commands.getstatusoutput('date')
(0, '2016\xe5\xb9\xb4 02\xe6\x9c\x88 22\xe6\x97\xa5 \xe6\x98\x9f\xe6\x9c\x9f\xe4\xb8\x80 21:02:52 CST')
>>> 

注意: 当执行命令的参数或者返回中包含了中文文字,那么建议使用subprocess,如果使用os.popen则会出现错误:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值