天天看點

python commands子產品_python commands子產品在python3.x被subprocess取代

subprocess

可以執行shell指令的相關子產品和函數有:

os.system

os.spawn

os.popen --廢棄

popen2.* --廢棄

commands.* --廢棄,3.x中被移除

import commands

result = commands.getoutput('cmd')   #隻傳回執行的結果, 忽略傳回值.

result = commands.getstatus('cmd')   #傳回ls -ld file執行的結果.

result = commands.getstatusoutput('cmd')

#用os.popen()執行指令cmd, 然後傳回兩個元素的元組(status, result). cmd執行的方式是{ cmd ; }2>&1, 這樣傳回結果裡面就會包含标準輸出和标準錯誤.

例子

>>> subprocess.getstatusoutput('pwd')

(0, '/home/ronny')

>>> subprocess.getoutput('pwd')

'/home/ronny'

>>> subprocess.getstatus('pwd')

Traceback (most recent call last):

File "", line 1, in

AttributeError: module 'subprocess' has no attribute 'getstatus'

以上執行shell指令的相關的子產品和函數的功能均在 subprocess 子產品中實作,并提供了更豐富的功能。

(1) call

執行指令,傳回狀态碼(指令正常執行傳回0,報錯則傳回1)

ret2=subprocess.call("ipconfig")    #python3.5不是這樣,依然會抛出異常導緻無法對ret2指派

print(ret1) #0

print(ret2) #1

ret = subprocess.call(["ls", "-l"], shell=False) #shell為False的時候指令必須分開寫

ret = subprocess.call("ls -l", shell=True)

(2) check_call

執行指令,如果執行成功則傳回狀态碼0,否則抛異常

subprocess.check_call(["ls", "-l"])

subprocess.check_call("exit 1", shell=True)

(3) check_output

執行指令,如果執行成功則傳回執行結果,否則抛異常

subprocess.check_output(["echo", "Hello World!"])

subprocess.check_output("exit 1", shell=True)