Проблемы с использованием subprocess.call () в Python 2.7.2 на Windows

Я пытаюсь сделать следующее и сбой с ошибкой. Я попытался запустить его из оболочки Python / из сценария / на консоли Windows, вызвав python на консоли. Ничто не работает. Всегда такая же ошибка.

from subprocess import call >>>pat = "d:\info2.txt" >>> call(["type",pat]) >>>Traceback (most recent call last): File "<pyshell#56>", line 1, in <module> call(["type",pat]) File "C:\Python27\lib\subprocess.py", line 493, in call return Popen(*popenargs, **kwargs).wait() File "C:\Python27\lib\subprocess.py", line 679, in __init__ errread, errwrite) File "C:\Python27\lib\subprocess.py", line 893, in _execute_child startupinfo) WindowsError: [Error 2] The system cannot find the file specified 

кто-нибудь знает, что здесь не так. !! ???

даже простой call(["date"]] без каких-либо аргументов также терпит неудачу с той же ошибкой.

Я использую: Python 2.72 32-разрядную версию на машине Windows 7.

4 Solutions collect form web for “Проблемы с использованием subprocess.call () в Python 2.7.2 на Windows”

Добавить shell=True для вызова :

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

Как вы видите, он дает в качестве значения код возврата, а не выход dir . Кроме того, он ждет, пока команда завершится, так что

 >>> subprocess.call('date', shell=True) 

будет ждать ввода новой даты.

edit: Если вы хотите захватить вывод, используйте subprocess.check_output . Например, type команды DOS выводит содержимое файла. Итак, предположим, что ваш файл info2.txt содержит ваше имя пользователя, вы бы сделали:

 >>> import subprocess >>> path = r'd:\info2.txt' >>> output = subprocess.check_output(['type', path], shell=True) >>> print output Vinu 

Для всех способов вызова внешних команд в Python см. Этот всеобъемлющий обзор связанного вопроса , для получения дополнительной информации о subprocess , см. Эту статью Дуга Хеллмана .

Команда «type» не запускается, потому что это внутренняя команда – внутренняя для интерпретатора команд / оболочки под названием CMD.EXE. Вместо этого вам нужно называть «имя файла cmd.exe». Точный код:

 call(['cmd','/C type abc.txt']) 
 pat = "d:\info2.txt" 

В Python и большинстве других языков программирования символ \ является escape-символом, который не включен в строку, если не удваивается. Или используйте необработанную строку или избегайте escape-символа:

 pat = "d:\\info2.txt" 

Побег \ с \\ :

 pat = "d:\\info2.txt" 

или использовать «сырые» строки:

 pat = r"d:\info2.txt" 
  • Ошибка установки программы
  • WindowsError: Система не может найти файл, указанный для pytesseract
  • mysql отсутствует информация о саундтреке после запуска imdbpy2sql.py
  • TypeError: int не может быть вызвано
  • Python - соединительные линии с plot_date в Matplotlib
  • Почему с Django не документирована ручная интеграция с Django?
  • проверьте, связаны ли два слова друг с другом
  • Обобщение добавления вложенных списков
  • Python - лучший язык программирования в мире.