python - 为什么我不能在 python CMD 模块中使用彩色提示?
问题描述
我正在尝试对cmd
python 中的模块使用彩色提示。
提示.py
from cmd import Cmd
from utils.data_types import Str
class Prompt(Cmd):
def __init__(self):
Cmd.__init__(self)
self.prompt = "prompt ({}) > ".format(Str("home").red())
def emptyline(self):
pass
数据类型.py
class Str(str):
def red(self):
return "\033[31m{}\033[0m".format(self)
def green(self):
return "\033[32m{}\033[0m".format(self)
def yellow(self):
return "\033[33m{}\033[0m".format(self)
def blue(self):
return "\033[34m{}\033[0m".format(self)
使用此代码,如果我继续输入提示,如果末尾没有空格,它应该转到换行符,但它会覆盖同一行。
我查看了cmd.py
文件,它使用input
方法和readline
. 我认为这可能是input
方法的问题,我尝试了以下它工作正常,只有当我使用cmd
模块时提示中断。
inp = input("prompt ({}) > ".format(Str("home").red()))
编辑:
我认为问题在于readline
,每当我导入readline
提示符时,如果我不导入readline
提示符就可以正常工作。这是一个错误吗?
解决方案
事实证明这不是python的问题。相反,这是 readline 工作方式的一个怪癖......
如果使用颜色提示,请查看如何修复 Python readline 中的列计算
颜色提示需要用 RL_PROMPT_START_IGNORE 和 RL_PROMPT_END_IGNORE 包裹。
推荐阅读
- typescript - 无法将 @core 安装到 Angular 11 项目
- azure - 有没有办法在 C# 的单个字段中映射两种不同的类型(字符串和字符串数组)?
- python - 为什么这个递归返回 0?
- c - C使用结构从C中的文本文件中读取记录
- hibernate-search - 使用 @IndexingDependency derivedFrom 和属性桥
- optimization - 如何在 R 中将无风险利率更改为我的投资组合优化(我正在使用投资组合分析包)?
- .net - 如何从 Azure DevOps Pipeline 上的构建解决方案步骤中排除项目
- reactjs - 如何正确管理多个视频播放器的状态?
- qt - 如何在 QT Web 程序集中返回值之前等待异步 lamda 函数完成
- batch-file - 批处理 - 每行读取第一行,然后读取第一个符号