2017-11-22 20 views
12

Tôi cố gắng để in văn bản màu với colorama nhưng khi tôi biên soạn một exe và chạy sau ...đầu ra của [text 31m thay vì màu

from colorama import Fore, Back, Style 
print(Fore.RED + 'text') 
print(Back.GREEN + 'and with a green background') 
print(Style.DIM + 'and in dim text') 
print(Style.RESET_ALL) 
print('back to normal now') 
I get output of:: 

Output:

[31mtext 
[0m 
back to normal now 

Có có thể in màu khi biên dịch thành pyinstaller exe hoặc đơn giản là không thể?

+0

Thứ gì đó đang bỏ qua hoặc bỏ qua nhân vật thoát, nhưng bạn cần cho chúng tôi biết thêm về cách bạn đang chạy điều này để cho phép chúng tôi tìm ra lý do tại sao điều đó xảy ra. Để bắt đầu, phiên bản 'colorama' nào được cài đặt, trên nền tảng nào? – tripleee

+1

@tripleee Tôi đang sử dụng các cửa sổ và phiên bản mới nhất của colorama. Tôi chỉ đơn giản sử dụng: Pyinstaller -F color.py –

Trả lời

8

Trên Windows, bạn phải khởi tạo Colorama với colorama.init() (xem dòng thứ hai):

from colorama import Fore, Back, Style 
colorama.init() 
print(Fore.RED + 'text') 
print(Back.GREEN + 'and with a green background') 
print(Style.DIM + 'and in dim text') 
print(Style.RESET_ALL) 
print('back to normal now') 

Tôi đã thử nghiệm mã này trong cmdPowerShell và nó tạo ra các dự kiến ​​màu đầu ra.

Từ Colorama docs:

Trên Windows, gọi init() sẽ lọc chuỗi thoát ANSI ra của bất kỳ văn bản gửi đến stdout hoặc stderr, và thay thế bằng tương đương Win32 gọi.

Trên các nền tảng khác, gọi init() không có hiệu lực (trừ khi bạn yêu cầu chức năng tùy chọn khác; xem “Init Keyword Args”, bên dưới). Theo thiết kế, điều này cho phép các ứng dụng gọi init() vô điều kiện trên tất cả các nền tảng, sau đó đầu ra ANSI chỉ hoạt động.

3

cmd.exe của Windows không hỗ trợ chuỗi ANSI thoát.

chủ đề này trên superuser sức giúp nếu bạn muốn những được intepreted bởi cmd.exe natively http://superuser.com/questions/413073/windows-console-with-ansi-colors-handling/

bút chì màu Vì vậy, tinh khiết có thể không hoạt động dưới cmd.exe của Windows.

Tuy nhiên theo tài liệu của colorama

này có Kết quả cuối cùng của việc cung cấp một API cross-platform đơn giản để in văn bản terminal màu từ Python, và có tác dụng phụ hài lòng rằng các ứng dụng hoặc thư viện mà sử dụng hiện Trình tự ANSI để tạo ra đầu ra màu trên Linux hoặc Mac có thể bây giờ cũng hoạt động trên Windows, đơn giản bằng cách gọi colorama.init().

Thử sử dụng ConEmu. Bạn có thể có thể làm điều đó

+0

Văn bản in màu này có thể hoạt động được không nếu tôi chạy nó trên máy tính xách tay? Bạn có thể cung cấp một ví dụ? Nghe có vẻ thú vị. –

+0

Tôi chưa thử nghiệm trên cửa sổ. Nếu không có conemu, có các gói khác – bigbounty

+0

Tôi hiểu. Tôi cho rằng điều này sẽ làm cho màu sắc hoạt động trên máy tính của tôi, nhưng nếu tôi sử dụng điều này trên một phụ thuộc bên ngoài khác sẽ cần phải được cài đặt mà không thực sự lý tưởng. –

Các vấn đề liên quan