Zastanawiam się, czy ktoś wie, jak ustawić kolor tekstu, który pojawia się w powłoce. Zauważyłem, że "ls" używa kilku różnych kolorów podczas drukowania informacji na ekranie (na moim komputerze z Linuksem), zastanawiałem się, czy mógłbym to wykorzystać w Pythonie.Python | zmień kolor tekstu w powłoce
Odpowiedz
Użyj sekwencji ucieczek lub sekwencji ANSI. Zanim zaczniesz wydobywać sekwencje ucieczki, powinieneś sprawdzić, czy stdout jest tty. Możesz to zrobić za pomocą sys.stdout.isatty()
. Oto funkcja wyciągnął z projektu kopalni, która drukuje wyjście na czerwony lub zielony, w zależności od stanu, stosując sekwencje ANSI Escape:
def hilite(string, status, bold):
attr = []
if status:
# green
attr.append('32')
else:
# red
attr.append('31')
if bold:
attr.append('1')
return '\x1b[%sm%s\x1b[0m' % (';'.join(attr), string)
Wszystkie główne kody kolorów podane są w https://www.siafoo.net/snippet/88
Certyfikat bezpieczeństwa tej witryny wygasł. Czy ktokolwiek może zweryfikować, czy jest to bezpieczna witryna? – BlackVegetable
@BlackVegetable, tak, wygląda tak samo jak wcześniej. Możesz także wyświetlić [HTTP] (http://www.siafoo.net/snippet/88), jeśli wolisz. Skontaktuję się z nimi, aby poinformować ich o certyfikacie. –
nawet jeśli mu ufasz, @BlackVegetable, otrzymujesz błąd serwera proxy –
curses
pozwoli prawidłowo używać kolorów dla danego typu terminala, który jest używany.
To jest tak proste do zrobienia na PC: Windows OS: Wyślij OS polecenie, aby zmienić tekst: import os
os.system('color a') #green text
print 'I like green'
raw_input('do you?')
właśnie opisane bardzo popularną bibliotekę clint. Który ma więcej funkcji oprócz barwienia wyjścia na terminalu.
Przy okazji obsługuje terminale MAC, Linux i Windows.
Oto przykład z użyciem:
Instalacja (Ubuntu)
pip install clint
celu dodania koloru do sznurek
colored.red('red string')
Przykładowe zastosowanie do kolor wyjściowy (styl polecenia django)
from django.core.management.base import BaseCommand
from clint.textui import colored
class Command(BaseCommand):
args = ''
help = 'Starting my own django long process. Use ' + colored.red('<Ctrl>+c') + ' to break.'
def handle(self, *args, **options):
self.stdout.write('Starting the process (Use ' + colored.red('<Ctrl>+c') + ' to break)..')
# ... Rest of my command code ...
- 1. Android: Zmień kolor tekstu Tab w FragmentActivity
- 2. Android - PreferenceActivity - Zmień kolor tekstu podsumowania CheckBoxPreference
- 3. Jak zastępczy Zmień kolor tekstu - iOS
- 4. Zmień kolor tekstu Pasek wyszukiwania iOS
- 5. Zmień Google Google Picker Appbar Kolor tekstu
- 6. Android TextView: Zmień kolor tekstu po kliknięciu
- 7. Zmień kolor UIPicker
- 8. Zmień kolor wyjściowy Natywny kolor kursora
- 9. Zmień kolor tekstu wyjściowego w systemie Windows do stderr
- 10. Zmień kolor czcionki dla zmiennej jako części tekstu w komórce
- 11. Zmień wejściowego kolor obramowania tekstu bez zmiany jego wysokości
- 12. Zmień kolor tekstu menu opcji, gdy używamy aplikacji: showAsAction = "zawsze"
- 13. Swift - Zmień kolor i rozmiar tekstu po dotknięciu UIButton
- 14. Zmień kolor tekstu na pasku stanu, gdy primaryDark jest biały
- 15. Tymczasowo zmień kolor rysowania
- 16. Zmień kolor osi etykiet
- 17. Zmień kolor obramowania NSTextField
- 18. Zmień UIBarbuttonItems Kolor
- 19. Zmień kolor androida: activatedBackgroundIndicator
- 20. Zmień kolor przeskoku ViewPager na kolor
- 21. Zmień tło tekstu UISearchBarField
- 22. Zmień kolor półprzezroczystego czarnego UINavigationBar
- 23. Kolor tekstu obsługującego tło
- 24. Nieprawidłowy kolor tekstu wejściowego
- 25. Zmień kolor selektora hasłem Maska
- 26. Ustaw globalny kolor tekstu?
- 27. Notepad ++ zmienić kolor tekstu?
- 28. Zmień rozmiar czcionki i kolor czcionki UIBarButtonItem
- 29. Zmień kolor obramowania Koloru TextBox
- 30. Linia Zmień Kolor EditText - Android
+1, szczególnie dla 'sys.stdout.isatty()' – Nifle
Miło jest mieć także przesłonięcie dla sprawy, że wyjście nie jest tty, ale nadal chcesz tego koloru - powiedzmy, że filtrujesz linie tylko za pomocą sed lub grep –
'unbuffer' może to zrobić, więc nie utkniesz, jeśli nie ma żadnego nadpisania. –