Ошибка. Команда не была найдена с использованием модуля wexpect python в Windows

Итак, я пытаюсь взаимодействовать с файлом .exe (tcpclient.exe), и документы pexpect показывают, что он идеален, поскольку мне нужно отправлять несколько входных данных и взаимодействовать с программой.

Но я даже не могу заставить работать следующий код

import wexpect

child = wexpect.spawn('dir')
print child

Я предполагаю, что любая переменная может быть напечатана() при условии, что функция действительна.

Ниже приведено сообщение об ошибке

Traceback (most recent call last):

File "test1.py", line 13, in <module>

child = wexpect.spawn('dir')

File "C:\pytest\wexpect.py", line 279, in spawn
return spawn_windows(command, args, timeout, maxread, searchwindowsize, logfile, cwd, env)

File "C:\pytest\wexpect.py", line 1653, in __init__
    self._spawn (command, args)

File "C:\pytest\wexpect.py", line 1698, in _spawn

raise ExceptionPexpect ('The command was not found or was not executable: %s.' % self.command)

ExceptionPexpect: The command was not found or was not executable: dir.

Я использую WindowsXP. У меня установлен MinGW и Python 2.7. Я использую wexpect через пакет pywin32.

pywin32-217.win32-py2.7.exe, которое было именем установочного .exe.

Мой путь к Python установлен как C:\Python27\. Я попытался установить его на C:\Python27\bin, как кто-то упомянул, но после этого я не смог выполнить python. Я просмотрел исходный код для wexpect, и там есть функция «what ()», которая возвращает «None» на свой вход «dir». Я не смог изменить ее, чтобы она работала иначе.

Пожалуйста, скажите мне, что я сделал неправильно.

Заранее спасибо.


person Vikram Raghu    schedule 02.03.2015    source источник
comment
dir — это внутренняя команда. Возможно, wexpect не запускает cmd.exe по умолчанию. Что произойдет, если вы запустите 'cmd /c dir' вместо этого?   -  person jfs    schedule 02.03.2015
comment
Неа. Тот же результат. Также у меня есть exe, о котором я упоминал. Я пытался запустить это изначально, но это не сработало. Поэтому я попытался сначала заставить модуль работать. Я вижу файлы pexpect.pyc и wxpect.pyc в моем Python27/Lib.   -  person Vikram Raghu    schedule 02.03.2015
comment
Что произойдет, если вы запустите: import subprocess; subprocess.check_call('cmd /c dir')?   -  person jfs    schedule 02.03.2015
comment
Он дает правильный вывод. Я вижу все файлы и все такое.   -  person Vikram Raghu    schedule 02.03.2015
comment
Попробуйте передать полный путь, включая расширение файла ('.exe'), в wexpect: r'c:\Windows\...'. Вы также можете попробовать модуль winpexpect. Хотя оба модуля, насколько я помню, не поддерживаются — попробуйте найти более новую версию на bitbucket или github.   -  person jfs    schedule 02.03.2015
comment
Это тоже не сработало. Спасибо. я пойду искать   -  person Vikram Raghu    schedule 02.03.2015


Ответы (1)


'dir' — это внутренняя команда cmd.exe, поэтому wexpect не может ее найти.

Вам нужен абсолютный путь к исполняемому файлу и список аргументов.

В этом случае используйте cmd для выполнения dir.

>>> import wexpect
>>> child = wexpect.spawn('C:\windows\system32\cmd.exe',['/c','dir'])
>>> print child
<wexpect.spawn_windows object at 0x024926B0> version: 2.3 ($Revision: 399 $)
command: C:\windows\system32\cmd.exe
args: ['C:\\windows\\system32\\cmd.exe', '/c', 'dir']
---snip
person rickfoosusa    schedule 08.04.2015