总是>>>在Python中看到提示是很无聊的.什么是随机更改提示前缀的最佳方法?
我想象一下这样的互动:
This is a tobbaconist!>> import sys
Sorry?>> import math
Sorry?>> print sys.ps1
Sorry?
What?>>
Run Code Online (Sandbox Code Playgroud) 这可能是一个愚蠢的问题,我可能会最终将其删除,一旦我搞清楚,但我发誓我记得读,在Python 3.5文档,如何改变>>>对Python的交互提示,例如,如何调用help()意志改为help>.但出于某种原因,当我回去试图记住时,我却找不到它的指示.有谁知道这是可能的,还是我只想象事情?
谢谢
我正在使用Python 2的cmd模块为程序创建命令行.只要我不在我的提示中添加颜色,一切都很好用.
工作代码:
from cmd import Cmd
class App(Cmd):
def __init__(self):
Cmd.__init__(self)
self.prompt = "PG ["+ (str('username'), 'green') +"@"+ str('hostname') +"]: "
def do_exit(self, line):
'''
'''
return True
App().cmdloop()
Run Code Online (Sandbox Code Playgroud)
当我更改下面的代码时,如果我输入一个长命令或尝试搜索命令历史记录,一些字符会坚持我的提示.
问题代码:
from cmd import Cmd
class App(Cmd):
def __init__(self):
Cmd.__init__(self)
self.prompt = "PG ["+ self.colorize(str('username'), 'green') +"@"+ str('hostname') +"]: "
colorcodes = {'green':{True:'\x1b[32m',False:'\x1b[39m'}}
def colorize(self, val, color):
return self.colorcodes[color][True] + val + self.colorcodes[color][False]
def do_exit(self, line):
'''
'''
return True
App().cmdloop()
Run Code Online (Sandbox Code Playgroud)
你可以在asciicasts中看到这个问题.cmd2模块也存在问题.
我想在终端上有一个更加丰富多彩的Python提示,只是为了便于阅读.我目前有:
sys.ps1 = '\033[96m>>> \033[0m'
sys.ps2 = '\033[96m... \033[0m'
Run Code Online (Sandbox Code Playgroud)
在我的PYTHONSTARTUP文件中,它根据需要提供颜色.但是,行上的任何文本都无法正确包装.文本到达行的末尾,而不是立即开始新行,在开始换行之前开始覆盖第一行的开头.正如您可能想象的那样,这实际上是不可读的.我该如何解决这个问题?
以下程序打印彩色的readline提示.它打破了控制-a(光标最终向右移动得比它应该的更远):
#include <readline/readline.h>
#include <readline/history.h>
#define CYELLOW "\001\e[0;31m\002"
#define RESET "\001\e[0m\002"
int main(int argc, char **argv)
{
readline(CYELLOW "prompt> " RESET);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
control-a在我没有彩色提示时调用readline()时起作用:
readline("prompt> ");
Run Code Online (Sandbox Code Playgroud)
我正在使用Mac OS X 10.9.4.这是otool的输出:
/usr/lib/libreadline.dylib:
/usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)
/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1
Run Code Online (Sandbox Code Playgroud)
有几个stackoverflow问题似乎涉及到这个:
他们都提到颜色标记需要被\ 001和\ 002括起来.我遵循了那些指示,但控制权仍然被打破了.
python ×4
readline ×2
bash ×1
c ×1
colors ×1
command-line ×1
macos ×1
prompt ×1
python-2.x ×1
python-3.x ×1