我试图打开Windows上使用pexpect.popen_spawn.PopenSpawn作为pexpect.spawn仅在Linux平台上可用的telnet连接。我已经测试了Linux上的pexpect.spawn同一python脚本,它工作正常。但是,我无法打开Windows上使用的telnet pexpect.popen_spawn.PopenSpawn。该生产线pexpect.popen_spawn.PopenSpawn("C:/Windows/System32/telnet.exe <IP> <PORT>")
显示以下错误
console = popen_spawn.PopenSpawn(mycommand)
File "C:\Python27\lib\site-packages\pexpect\popen_spawn.py", line 45, in __ini
t__
self.proc = subprocess.Popen(cmd, **kwargs)
File "C:\Python27\lib\subprocess.py", line 710, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
现在TELNET.EXE可在C:/在Windows / System32下,我已经成功地测试了使用上的命令提示符下的Telnet相同的命令。我究竟做错了什么?任何想法?我使用Python 2.7
Pexpect的似乎不喜欢的路径反斜杠!例如尝试这个:
mycommand = mycommand.replace("\\", "/")
console = popen_spawn.PopenSpawn(mycommand)
(仅限于Windows的问题)
考虑使用你的命令执行的绝对路径。为了找出远程登录所在,运行cmd.exe的以下内容:其中,telnet和应该给你的绝对路径。
后来干脆:
popen_spawn.PopenSpawn( 'C:/在Windows / System32下/远程登录***')
我打开pexpect
pull请求修复此问题。直到它被接受,使用demented-hedgehog's solution。