PopenSpawn и команда ftp
Вопрос - я пытаюсь сделать минимальный пример с последним pexpect, но не могу приступить к работе базового примера (src ниже) в следующем
окружающая среда:
Windows 10, 64-битная команда Python 3.4 является ftp localhost (сервер filezila, работает на localhost)
я знаю, что поддержка окон в pexpect помечена как экспериментальная, но все же было бы полезно, чтобы она заработала... проблема:
если в коде ниже я использую
co.expect("",timeout=30)
, тогда скрипты работают, потому что он не ждет приглашения после входа в систему... но, поскольку мне нужно взаимодействовать и ставить более сложный запрос, мне нужно использоватьco.expect("ftp>",timeout=30)
но в этот момент pexpect подождет до тайм-аута.. я обнаружил, в popen_spawn.py ничего не происходит. возможно ли self.proc.stdout.fileno() буферизует и ждет неопределенно, пока буфер не будет заполнен?
import pexpect
from pexpect import popen_spawn
import sys
try:
hostname = "127.0.0.1"
co = pexpect.popen_spawn.PopenSpawn('ftp localhost',encoding="utf-8")
co.logfile = sys.stdout
co.timeout = 4
co.expect(":")
co.sendline("test")
co.expect(".*word:.*")
co.sendline("test123")
co.expect("",timeout=30)
co.sendline('dir')
co.expect('ftp>')
co.close()
except Exception as e:
print(co)