乐趣区

关于人工智能:python学习执行shell命令

这里介绍一下 python 执行 shell 命令的四种办法:

1、os 模块中的 os.system() 这个函数来执行 shell 命令

>>> os.system('ls')
anaconda-ks.cfg  install.log  install.log.syslog  send_sms_service.py  sms.py

注,这个办法得不到 shell 命令的输入。

2、popen()# 这个办法能失去命令执行后的后果是一个字符串,要自行处理能力失去想要的信息。

>>> import os
>>> str = os.popen("ls").read()
>>> a = str.split("\n")
>>> for b in a:
        print b

这样失去的后果与第一个办法是一样的。

3、commands 模块 #能够很不便的获得命令的输入(包含规范和谬误输入)和执行状态位

import commands
a,b = commands.getstatusoutput('ls')
a 是退出状态
b 是输入的后果。>>> import commands
>>> a,b = commands.getstatusoutput('ls')
>>> print a
0
>>> print b
anaconda-ks.cfg
install.log
install.log.syslog

commands.getstatusoutput(cmd) 返回(status,output)

commands.getoutput(cmd) 只返回输入后果

commands.getstatus(file) 返回 ls -ld file 的执行后果字符串,调用了 getoutput,不倡议应用这个办法。

4、subprocess 模块

应用 subprocess 模块能够创立新的过程,能够与新建过程的输出 / 输入 / 谬误管道连通,并能够取得新建过程执行的返回状态。应用 subprocess 模块的目标是代替 os.system()、os.popen()、commands. 等旧的函数或模块。

import subprocess

1、subprocess.call(command, shell=True)

会间接打印出后果。

2、subprocess.Popen(command, shell=True) 也能够是 subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 这样就能够输入后果了。

如果 command 不是一个可执行文件,shell=True 是不可省略的。

shell=True 意思是 shell 下执行 command

这四种办法都能够执行 shell 命令。

退出移动版