Проблемы с использованием 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" 
  • Windows 7 64bit - Python 2.7.3 64bit установлен - проблемы с Pygame
  • SWIG + setup.py: ImportError: динамический модуль не определяет функцию init (init_foo)
  • Загрузка Selenium-python, но файл сохраняется как .part
  • Python - разработка, если время между двумя моментами
  • изменение оператора ** на силовую функцию с помощью синтаксического анализа?
  • Python 2.7 ply.yacc генерирует ошибку «не может получить исходный код» в pyinstaller
  • Django celery получает статус задачи с помощью Ajax
  • Использование Beatiful Soup для получения данных из раздела без класса
  •  
    Interesting Posts for Van-Lav

    Отфильтруйте набор запросов Django ContentType, чтобы включать только модели, которые имеют конкретный метод

    Добавить строку в файл, если она не существует с помощью python

    Преобразование строки в существующие имена переменных

    Многопоточный многоклиентский сервер в python

    подгонка кривой с известной функцией numpy

    Определение вложенных пространств имен в URLConf, для обращения к URL-адресам Django – есть ли у кого-нибудь убедительный пример?

    Каким образом программа Python / Twisted может проверить сертификат SSL под Windows?

    Запуск Kivy на Linux xfce (chromebook) дает только черный экран

    Как обеспечить память «нулей» Python при сборке мусора?

    Как вы смотрите переменную в pdb

    Выпускать исполняемый файл python с зависимостью от привязок python библиотеки C ++

    virtualenv, mysql-python, pip: кто-нибудь знает как?

    Как установить время ожидания соединения в SQLAlchemy

    Библиотека mpeg-2 для извлечения продолжительности видео

    Сделать поток ждать либо таймера, либо сигнала?

    Python - лучший язык программирования в мире.