簡體   English   中英

打印彩色輸出 - 從控制台工作,但不從腳本工作

[英]Print colorized output - working from console but not from script

我有一個奇怪的問題,我不能把手指放在上面。 有一個程序,我使用(並不時提供)彩色控制台輸出。 在重新安裝Windows之前,一切都很順利。 現在我無法獲得彩色輸出。

這是用於着色的腳本

我已經設法將問題縮小到或多或少,簡單的情況,但我不知道出了什么問題。

這是按預期工作的控制台提示符(字符串test以紅色打印):

Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0, r'c:\bin\SV\tea\src')
>>> from tea.console.color import cprint, Color
>>> cprint('test\n', Color.red)
test
>>>

但是當我使用相同版本的python運行以下腳本時,我得到輸出test但不是紅色(沒有顏色,只是默認的控制台顏色):

import sys
sys.path.insert(0, r'c:\bin\SV\tea\src')

from tea.console.color import cprint, Color
cprint('test\n', Color.red)
  • 在重新安裝系統之前,相同的設置有效。
  • 我已經檢查過,交互模式和腳本中的環境變量是一樣的。
  • 我在標准的Windows命令提示符和我經常使用的控制台程序中試過這個。
  • 有問題的操作系統是Windows 8,在重新安裝之前,這也用於Windows 8。
  • 具有相同設置的相同代碼適用於工作中的計算機(Windows 7)。
  • 我安裝了Python 2.7和Python 3.3(就像我之前做的那樣)。 我試圖直接調用python解釋器( c:\\Python27\\python.exe )或py -2運行腳本,但它沒有幫助。
  • IPython和mercurial將輸出着色。

任何想法我可以嘗試使這項工作?

編輯

也許它不是很清楚,但我用來着色輸出的腳本是在一個有問題的鏈接中給出的。 這里再一次: https//bitbucket.org/alefnula/tea/src/dc14009a19d66f92463549332a321b29c71d47b8/src/tea/console/color.py?at=default

我找到了問題和解決方案。

我相信問題是x64 ctypes模塊中的錯誤。 我安裝了Python 2.7 x64並且該版本跟隨行(來自我所鏈接的腳本):

ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, code)

返回錯誤代碼6及描述The handle is invalid 經過一番調查,我推斷出問題可能是x64版本的python,所以我安裝了32位版本,一切都按預期工作。

既然這解決了我的問題,而且我沒有時間進行更深入的分析,我會把它留在這里,只是想給出某種解決問題的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM