问题描述
使用input()
接收用户的命令行输入时,当用户输入中文,并用退格键删除中文时,删一个中文字需要按两下退格键,并且还会出现utf8编码问题。
解决
导入readline
包即可,不需要引用。Linux/mac的python标准包就有
import readline
readline包的作用
readline是一个用于增强交互式命令行体验的库,提供以下功能:
1. 行编辑功能
- 支持使用方向键移动光标
- 支持退格键删除字符
- 支持Delete键删除光标后的字符
- 支持Home/End键快速移动到行首/行尾
2. 历史记录管理
- 自动保存输入历史
- 使用上下方向键浏览历史命令
- 支持搜索历史记录(Ctrl+R)
3. UTF-8和多字节字符支持
- 正确处理中文等多字节字符
- 避免在删除中文字符时出现UTF-8编码错误
- 确保光标位置正确计算
4. Tab补全
- 支持自定义tab补全功能
- 可以实现文件名、命令名等的自动补全
5. 键盘快捷键
- Ctrl+A:移动到行首
- Ctrl+E:移动到行尾
- Ctrl+K:删除光标到行尾的内容
- Ctrl+U:删除光标到行首的内容
- Ctrl+W:删除前一个单词
本文来自博客园,作者:花酒锄作田,转载请注明原文链接:https://www.cnblogs.com/XY-Heruo/p/19070456