windows調用系統或其他腳本的,常用的是os.popen,次命令本身并不返回執行后的狀態,無法用于后續的判斷,故嘗試Unix下的commands.getstatusoutput,發現在windows下并不能正常使用,如下:
>>> import commands
>>> status, output = commands.getstatusoutput('dir')
>>>
>>> import commands
>>> print output
'{' 不是內部或外部命令,也不是可運行的程序
或批處理文件。
>>>
>>> status, output = commands.getstatusoutput(dir)
Traceback (most recent call last):
File "", line 1, in
File "C:\Python27\lib\commands.py", line 59, in getstatusoutput
pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
TypeError: cannot concatenate 'str' and 'builtin_function_or_method' objects
發現commands調用了os.popen,備份原文件,稍作修改,結果如下:
#pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
pipe = os.popen(cmd, 'r')
刪除原有的commands.pyc,再試下,即可。
>>> import commands
>>>
>>> status, output = commands.getstatusoutput('dir')
>>>
>>> print output
驅動器 C 中的卷是 Win 7 Pro x64
C:\Users\perofu 的目錄
2018/10/17 15:08
2018/10/17 15:08
2018/05/25 14:59
2018/11/22 10:45
2018/11/13 10:31
2018/11/22 10:24
2018/10/12 11:28
2018/10/08 09:43
2018/10/17 14:56
2018/11/08 11:06
2018/05/25 14:59
2018/08/03 17:35
2018/11/22 13:55
1 個文件 5 字節
14 個目錄 94,719,250,432 可用字節
>>>
>>>
>>> print status
0
>>>
>>> status, output = commands.getstatusoutput('aaaaa')
>>>
>>> print status
1
>>> print output
>>>
僅作為記錄。