如何在Python输入中避免箭头键值?

10 投票
2 回答
2394 浏览
提问于 2025-06-08 05:48

我在用 input() 函数时,按下方向键会得到一些奇怪的值。

这种情况只在执行 Python 脚本的时候发生。如果是在解释器中输入,就不会出现这种情况。

我说的这些奇怪的值是:为什么在 Ubuntu 中按方向键时终端会显示 "^[[A" "^[[B" "^[[C" "^[[D"?

脚本文件的内容:

s = input("Enter Something: ")
print(s)

终端输出:

$ python input_example.py 
Enter Something: Now Pressing Left Arrow Key^[[D^[[D^[[D^[[D
Now Pressing Left Arrow Key

在输入内容时,我无法左右移动光标,因为按下方向键后出现了这些奇怪的值。有没有办法避免这种情况?终端 中,通常可以改变光标位置,但在 Python 的 input() 中就不行。

另外,我不想更改 bash 的任何设置,因为我想写一个在所有控制台都能用的脚本。我还是个新手,很多东西都不太懂。希望这个社区能帮我解决这个问题。

相关问题:

  • 暂无相关问题
暂无标签

2 个回答

0

我找到了一些答案:

https://www.codehaven.co.uk/python/using-arrow-keys-with-inputs-python/

Python中的curses模块是用来处理用户输入的。然后给每个方向键设置了自定义的行为。不过我不太确定这个代码是否经过测试(因为代码末尾用了分号),而Python是不允许这样做的。

即使这个方法是对的,但对于一些小任务的自动化脚本来说,这个方法太长太复杂了。有没有更简短的替代方案呢?

15

找到了一个解决办法!

你只需要导入readline模块。

import readline

这样一来,标准的input()方法就可以使用一些额外的功能了,这样你就可以正常使用方向键等其他功能。

撰写回答