dre*_*cko 5 shell ipython ipython-notebook
我可以执行需要在 ipython 和/或 ipython notebook 中输入的 shell 命令吗?
当我执行这样的命令时,我看到它是提示符,但没有明显的方法可以从我的键盘输入。
一个例子可能是rsync对远程服务器的命令(因此需要密码)。毫无疑问,这里存在安全方面的危险 - 在我的情况下,这些在我运行时有所减少localhost。
重新发布作为答案,并提供更多细节:
不,这是一个长期存在的问题,确实很难解决:github.com/ipython/ipython/issues/514
问题大致在于我们的架构无法判断进程何时正在等待输入,因此它不知道提示用户输入。
您可以使用 pexpect 和 raw_input 来模拟特定程序的情况。即,如果您说出提示的样子,它会在输出中发现该提示,并要求用户输入以发送回流程。例如对于Python:
import pexpect
p = pexpect.spawn('python')
while True:
try:
p.expect('\n>>> ')
print(p.before)
p.sendline(raw_input('>>> '))
except pexpect.EOF:
break
Run Code Online (Sandbox Code Playgroud)
我刚刚对此进行了简短的测试 - 它有效,但相当粗糙。这个概念还可以改进。