2014-09-11 3 views
0

Может ли кто-нибудь объяснить, что здесь происходит? Даже встроенные в cmd.exe команды не работают:Подпроцесс Python не работает в Windows 7

Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit (AM 
D64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import subprocess 
>>> subprocess.call('dir') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "D:\Python34\lib\subprocess.py", line 535, in call 
    with Popen(*popenargs, **kwargs) as p: 
    File "D:\Python34\lib\subprocess.py", line 848, in __init__ 
    restore_signals, start_new_session) 
    File "D:\Python34\lib\subprocess.py", line 1104, in _execute_child 
    startupinfo) 
FileNotFoundError: [WinError 2] The system cannot find the file specified 
>>> 

ответ

6

Чтобы использовать 'dir', вы должны пройти shell=True:

>>> import subprocess 
>>> subprocess.call('dir', shell=True) 

Вы должны сделать это, потому что dir встроен в сам корпус, это не отдельное консольное приложение. Это также упоминается в subprocess.Popendocumentation:

В Windows с оболочкой = True, переменная окружения COMSPEC определяет оболочки по умолчанию. Единственный раз, когда вам нужно указать shell = True на Windows - это когда команда, которую вы хотите выполнить, встроена в оболочку (например, dir или copy). Вам не требуется shell = True для запуска пакета файла или исполняемого файла на основе консоли.

Смежные вопросы