我希望在colorama的Fore(或Back)模块中拉出所有颜色[例如LIGHTMAGENTA_EX,YELLOW ...]函数(或任何适当的术语),并将它们附加到列表中。我知道我可以用
附加所有函数from colorama import Fore
colors = []
for item in dir(Fore):
colors.append(item)
但我只想要描述颜色的那些。我注意到这些函数的一个共同属性:它们有一个属性'AnsiFore'。是否可以创建这些函数的列表而无需手动执行此操作?
答案 0 :(得分:2)
Fore
中的颜色不是AnsiFore
个对象,正如您在问题中所说的那样。它们只是字符串,因此它们也没有AnsiFore
属性。
>>> dir(Fore)
['BLACK', 'BLUE', 'CYAN', 'GREEN', 'LIGHTBLACK_EX', 'LIGHTBLUE_EX', 'LIGHTCYAN_EX', 'LIGHTGREEN_EX', 'LIGHTMAGENTA_EX', 'LIGHTRED_EX', 'LIGHTWHITE_EX', 'LIGHTYELLOW_EX', 'MAGENTA', 'RED', 'RESET', 'WHITE', 'YELLOW', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
你可以做的最好的事情是:
>>> colors = [i for i in dir(Fore) if not i.startswith('_')]
>>> colors
['BLACK',
'BLUE',
'CYAN',
'GREEN',
'LIGHTBLACK_EX',
'LIGHTBLUE_EX',
'LIGHTCYAN_EX',
'LIGHTGREEN_EX',
'LIGHTMAGENTA_EX',
'LIGHTRED_EX',
'LIGHTWHITE_EX',
'LIGHTYELLOW_EX',
'MAGENTA',
'RED',
'RESET',
'WHITE',
'YELLOW']
如果需要,请查看模块source。颜色是由:
创建的字符串Black = 30
)str
的{{1}}个代表,在其前加int
,然后将'\033['
添加到其中:即:
m