WindowsError:[错误2]系统找不到pexpect.popen_spawn.PopenSpawn中指定的文件

时间:2016-12-16 13:21:32

标签: python python-2.7 telnet

我试图在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

3 个答案:

答案 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