Вот мой сценарий, который в настоящее время настраивает мои подсказки для всех моих компьютеров (будь то Windows, Red Hat или OS X):
import sys
import datetime
import platform
if platform.system() is 'Windows':
tealUText = ""
tealText = ""
greenText = ""
defaultText = ""
else:
tealUText = "\001\033[4;36m\002"
tealText = "\001\033[0;36m\002"
greenText = "\001\033[0;32m\002"
defaultText = "\001\033[0;0m\002"
class ClockPS1(object):
def __repr__(self):
now = datetime.datetime.now()
clock = str(now.strftime("%H:%M:%S"))
return tealUText + clock + greenText + " >>> " + defaultText
sys.ps1 = ClockPS1()
sys.ps2 = greenText + " ... " + defaultText
Во всех системах это выводит текущее время, за которым следует обычное приглашение «>>>» в первой строке, а затем, если у меня есть многострочный ввод, у него есть обычное приглашение «...», но с отступом, чтобы он выравнивался с приглашение ">>>" (помните, что это приглашение начинается с текущего времени).
Вот вопрос: на всех платформах, кроме Windows, текущее время печатается бирюзовым (и подчеркнутым), подсказки зеленым, и все, что я печатаю, отображается обычным цветом. Как я могу добиться того же самого в Windows? Я видел несколько предложенных решений, но они основаны на вызове функций во время печати сообщения, что, я не думаю, сработает для меня из-за того факта, что переменные ps
просто вызывают __repr__
для того, что им назначено, Правильно?
(Кстати, я получил этот временной трюк отсюда: python: отображать прошедшее время в оболочке а>)
termcolor
илиcolorama
, который является более переносимым (домашняя страницаcolorama
показывает, что он может работать в Windows, хотя не все свойства поддерживаются). - person Bakuriu   schedule 30.05.2014