问题描述
我有一组 Python 文本分析程序。我希望菜单和选定的终端输出具有各种颜色。我通过在开头包含 os.system("color")
并使用 ANSI 代码(显示在代码片段中)使其按需要工作。我的理解是这些代码是其他操作系统的原生代码,但是如果我包含 os.system("color")
,程序会在 Mac 上崩溃吗?如果是这样,是否有我可以使用的错误捕获例程来防止它?
CLR = {
"M": "\033[95m","B": "\033[94m","G": "\033[92m","R": "\033[91m","Y": "\033[93m","C": "\033[96m","NO": "\033[0m",}
print(CLR["M"],"Testing magenta!!",CLR["NO"])
print(CLR["B"],"Testing Blue!!",CLR["NO"])
print(CLR["G"],"Testing Green!!",CLR["NO"])
print(CLR["R"],"Testing Red!!",CLR["NO"])
print(CLR["Y"],"Testing Yellow!!",CLR["NO"])
print(CLR["C"],"Testing Cyan!!",CLR["NO"])
解决方法
通常人们可能会用 try/catch
块捕获异常/错误,但是 os.system
永远不会抛出异常,只要您提供一个字符串,即使该字符串不包含有效命令。
与其尝试 os.system('color')
是否有效并稍后捕获错误,您可以在调用任何内容之前检查用户正在运行的操作系统。这可以通过 sys.platform
:
import os,sys
if sys.platform == "win32":
os.system('color')
elif sys.platform == "linux" or sys.platform == "linux2":
# Linux specific stuff
elif sys.platform == "darwin":
# MacOS specific stuff