2016-04-25 4 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). ' C: \ Anaconda2 \ lib \ commands.py в getstatusoutput (cmd) 57" "" Возврат (статус, вывод) выполнения cmd в оболочке. "" " 58 import os ---> 59 pipe = os.popen ('{' + cmd + ';} 2> & 1', 'r') 60 text = pipe.read() 61 sts = pipe.close() TypeError: не может объединить 'str' и 'builtin_function_or_method' objects' – user6252041

ответ

1

В команды модуль не работает на Windows - это Unix-только. Кроме того, он устарел с версии 2.6, и он был удален в Python 3, поэтому вместо этого вы должны использовать модуль подпроцесса. Заменить эти строки:

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

с чем-то вроде этого:

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

Кроме того, после курса Google Python .. Мой 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) 
Смежные вопросы