You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook中为交互式命令行工具提供用户输入?

在Jupyter Notebook中为交互式命令行工具提供输入的方法

当然可以在Jupyter Notebook中给交互式命令行工具提供输入,以下是几种实用方法,既能避免单元格挂起,又能完整记录命令输出:

一、管道传递固定输入

适合简单场景(比如输入y/n确认操作),直接通过echo把输入内容通过管道传给命令,无需手动交互:

# 示例:给需要确认的安装命令自动输入y
! echo "y" | apt-get install some-package

执行后单元格会直接完成运行,同时显示命令的完整输出内容。

二、用Shell脚本封装多步固定输入

如果工具需要多轮固定输入,可把输入逻辑写入Shell脚本,再在Notebook中执行脚本:

  1. 新建脚本文件(比如interactive_ops.sh),内容示例:
#!/bin/bash
# 用here-doc方式给交互式工具传递多步输入
my_interactive_tool << EOF
first_input_value
second_input_value
y
EOF
  1. 在Notebook中执行脚本:
! chmod +x interactive_ops.sh && ./interactive_ops.sh

也可以用Jupyter魔法命令执行:

%run interactive_ops.sh

三、用pexpect实现动态交互

针对工具会根据环境动态请求不同输入的复杂场景,用Python的pexpect库可以实现基于输出的动态响应:

  1. 先安装pexpect:
! pip install pexpect
  1. 编写Python代码实现交互逻辑:
import pexpect

# 启动目标交互式命令
child = pexpect.spawn('my_dynamic_tool')

# 匹配工具的提示文本,发送对应输入
child.expect('Please enter your username:')
child.sendline('test_user')
child.expect('Do you want to continue? (y/n):')
child.sendline('y')
child.expect('Enter verification code:')
child.sendline('123456')

# 读取并打印所有输出,完整记录到Notebook中
print(child.read().decode('utf-8'))

这种方式能根据工具实时输出的提示内容,动态发送对应的输入,完全模拟手动交互的过程。

内容的提问来源于stack exchange,提问作者MsA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:03:22