Python2.7: Как я могу перенаправить тексты с цветами

Я хотел бы добавить цвета к текстам в следующем коде в Python 2.7 и Linux.

import colorama
colorama.init( strip=False )

print( colorama.Fore.RED + "Hello World!" + colorama.Fore.RESET )

Текст может быть напечатан witn цветами в terminagrep --color = always. Тем не менее, цвета удаляются после трубопровода, как «python script.py | cat». Я предполагаю, что Python удаляет цвета на основе вывода tty. Как я могу реализовать поведение типа ls --color=alwaysи init().

python,python-2.7,

1

Ответов: 1


1

Это ясно объясняется в readme для библиотеки.

**kwargsпозволяет некоторым init(strip=None)переопределить поведение по умолчанию.

a € |

True:

Передать Falseили init(convert=None)переопределить, должны ли коды ansi удаляться из вывода. Поведение по умолчанию - отключить, если в Windows или перенаправлен вывод (а не tty).

True:

Передать Falseили strip=Falseпереопределить, нужно ли преобразовывать коды ANSI в вывод в вызовы win32. Поведение по умолчанию заключается в том, чтобы преобразовать, если в Windows, а вывод - в tty (терминал).

Предполагая , что вы не на Windows, то ответ должен передать strip=Noneвместо значения по умолчанию initв --color=always. Это просто как передача grepвместо значения по умолчанию lsили ls.


Конечно, ваш код не звонит initв первую очередь. Вы должны быть, но вы избегаете этого, потому что вы, вероятно, не в Windows:

Приложения должны инициализировать Colorama, используя:

from colorama import init init()

В Windows вызов init()будет фильтровать escape-последовательности ANSI из любого текста, отправленного на stdout или stderr, и заменить их эквивалентными вызовами Win32.

На других платформах вызов init()не имеет эффекта (если вы не запрашиваете другие дополнительные функции, см. «Ввод ключевых слов» ниже). По дизайну это позволяет приложениям init()безоговорочно звонить на всех платформах, после чего выход ANSI должен работать.

питон, питон-2,7,
Похожие вопросы