Python如何在input()接收输入时,在输入区域后打印内容?
实现输入时同步显示上下分隔线的Python方案
要实现输入过程中就显示上下分隔线,不能依赖input()执行完成后再打印底部分隔线,得先输出所有需要显示的内容,再通过终端光标控制把输入位置移到指定区域。
核心思路
- 先打印顶部分隔线、输入提示行、底部分隔线
- 用终端光标控制代码,把光标移回到输入提示行的输入位置
- 执行空提示的
input()接收用户输入
代码实现
# 打印顶部分隔线 print("-----------------------------------") # 打印输入提示行 print(" > ") # 打印底部分隔线 print("-----------------------------------") # ANSI转义序列:上移2行回到输入行,再右移3个字符定位到输入位置(跳过" > ") print("\033[2A\033[3C", end="") # 接收用户输入,提示语为空 user_input = input("") # 可选:输入完成后将光标移回底部,避免界面混乱 print("\033[2B")
说明
- ANSI转义序列
\033[nA表示将光标向上移动n行,\033[nC表示向右移动n个字符 - 大部分现代终端(Linux/macOS终端、Windows PowerShell、Windows Terminal)都支持ANSI转义序列,旧版Windows CMD可能需要手动开启虚拟终端支持
- 输入完成后可以根据需要调整光标位置,示例中的
\033[2B是将光标下移2行到底部分隔线下方
内容的提问来源于stack exchange,提问作者cloud
相关产品推荐
相关产品推荐

