问题 - 我试图用最新的pexpect做出最小的例子,
但是不能在下面的工作中得到基本的例子(src在下面)
环境:
windows 10,64bit python 3.4
命令是ftp localhost(服务器是filezila,在localhost上运行)
我知道pexpect中的windows支持,被标记为实验性的,但是,它仍然是有用的,让它工作..
问题:
如果在下面的代码我使用
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)