2016-04-25 145 views
-2

我是Python新手,並遵循Google Developers教程。我遇到了一個錯誤 - >'{'在運行'python code.py'時未被識別爲內部或外部命令。與下面的代碼。我相信我的PATH變量爲python設置正確,因爲我可以沒有問題地運行其他python代碼。有人可以給我一些建議嗎?'{'不被識別爲內部或外部命令

import os 
import sys 
import commands 

def List(dir): 
    cmd = 'dir' + dir 
    print 'about to do this:', cmd 
    (status, output) = commands.getstatusoutput(cmd) 
    if status: 
     sys.stderr.write('there was an error:'+ output) 
     sys.exit(1) 
    print output 

def main(): 
    List(sys.argv[1]) 

if __name__ == "__main__": 
    main() 
+4

什麼是運行命令時的參數,確切的輸出是什麼? – chepner

+0

'python ./script.py .'無法重現 –

+0

我像例如運行命令。 python code.py。確切的輸出是'{'不被識別爲內部或外部命令。我只是在Jupyter中運行代碼,它似乎錯誤與commands.getstatusoutput(cmd)行相關。 ' getstatusoutput(cmd)中的C:\ Anaconda2 \ lib \ commands.py 57「」「在shell中執行cmd的返回(狀態,輸出)。」「」 58 import os ---> 59 pipe (){0} = os.popen('{'+ cmd +';} 2>&1','r') 60 text = pipe.read() 61 sts = pipe.close() TypeError:can not concatenate'和'builtin_function_or_method'objects' – user6252041

回答

1

命令模塊不工作在Windows上 - 這是僅限Unix。此外,從版本2.6開始,它已被棄用,並且它已在Python 3中被刪除,所以您應該使用子流程模塊。這樣

import commands 
(status, output) = commands.getstatusoutput(cmd) 

的東西:替換這些行也是繼谷歌的Python當然

import subprocess 
output = subprocess.check_output(['dir', dir]) 
0

.. 我commands.getstatusoutput()的替代看起來是這樣的:

import subprocess 
try: 
    output = subprocess.check_output(['dir', dir]) 
except subprocess.CalledProcessError as e: 
    print "Command error: " + e.output 
    print "Command output: " + output 
    sys.exit(e.returncode)