我正在尝试运行基本的Pexpect脚本:
import pexpect
ftp_process = pexpect.spawn('ftp')
ftp_process.interact()
当直接从终端运行代码时,代码将按预期工作。如果我使用PyCharm的运行/调试来运行代码,则会出现以下错误:
Traceback (most recent call last):
File "/path/to/code/test.py", line 3, in <module>
ftp_process.interact()
File "/usr/local/lib/python3.4/site-packages/pexpect/__init__.py", line 1645, in interact
mode = tty.tcgetattr(self.STDIN_FILENO)
termios.error: (25, 'Inappropriate ioctl for device')
在默认情况下,Pexpect与PyCharm的运行/调试窗口交互的方式似乎不起作用。是否有某种方法可以通过特定的PyCharm设置对此进行补救?如果没有,还有其他解决方法吗?
编辑
上面的代码只是导致问题的简化示例。仍然需要其他pexpect功能(例如
expect()
,sendline()
等)。 最佳答案
注意:这仅是一种解决方法,但它确实起作用。
如果通过使用单独的脚本从伪tty中调用该脚本,则可以实现所需的结果。例如,使用pty.spawn("python my_script.py".split())
,其中my_script.py是使用pexpect
的那个。
我发现有一个脚本可以在pexpect
内最初尝试try/except
调用,并在捕获错误后让该脚本在伪tty内重新调用,这是合理的。
最初的问题在评论中归功于塞巴斯蒂安·J·F。
关于python - Pexpect和PyCharm-设备的不合适的ioctl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31862983/