如何在IPython中拆分多行粘贴输入 使每次input()仅读取单行数值
IPython控制台多行粘贴逐行读取解决方案
以下两种方案可实现每次调用input()仅读取一行内容的需求:
方案1:单次临时使用(无需修改配置)
先一次性读取全量粘贴内容封装为行迭代器,后续逐次取行即可:
- 执行如下代码,出现输入提示后直接粘贴所有多行内容:
line_iter = iter(input().splitlines()) - 后续需要读取单行输入时,调用
next(line_iter)即可,效果和逐行调用input()完全一致,示例:
# 第一次调用读取第一行 359716482 first_val = next(line_iter) # 第二次调用读取第二行 867345912 second_val = next(line_iter)
方案2:修改配置长期生效
IPython默认开启括号粘贴模式,会将粘贴的多行内容合并为单次输入,关闭该功能即可实现逐行识别:
- 临时关闭(仅当前IPython会话生效):直接在控制台执行命令
%config TerminalInteractiveShell.bracketed_paste = False - 永久关闭:打开IPython配置文件
~/.ipython/profile_default/ipython_config.py,添加如下配置:c.TerminalInteractiveShell.bracketed_paste = False
注意:关闭括号粘贴后,粘贴带缩进的代码片段可能会出现语法识别异常,不需要时可将配置改回
True恢复默认行为。
内容的提问来源于stack exchange,提问作者asdfasdascvd
相关产品推荐
相关产品推荐

