我试图在Windows上使用pexpect.popen_spawn.PopenSpawn打开telnet连接,因为pexpect.spawn仅在Linux平台上可用。我在Linux上用pexpect.spawn测试了相同的python脚本,它工作正常。但是,我无法在Windows上使用pexpect.popen_spawn.PopenSpawn打开telnet。第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
答案 0 :(得分:2)
Pexpect似乎不喜欢路径中的反斜杠!!例如试试这个:
mycommand = mycommand.replace("\\", "/")
console = popen_spawn.PopenSpawn(mycommand)
(仅限Windows问题)
答案 1 :(得分:0)
考虑使用绝对路径执行命令。 要找出telnet所在的位置,请在cmd.exe中运行以下命令:telnet和那应该为您提供绝对路径。
然后只需:
popen_spawn.PopenSpawn(&#39; C:/ Windows / System32 / telnet ***&#39;)
答案 2 :(得分:0)
我打开了(gdb) p (static_cast<Base*>(userData))->handle
Cannot take address of method handle
的拉取请求来解决此问题。在接受之前,请使用demented-hedgehog's solution。