【发布时间】:2019-10-12 01:05:17
【问题描述】:
我正在尝试在 python 中为cmd 模块使用彩色提示。
prompt.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
data_types.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