2016-04-25 149 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)