Python 如果程序在Mac os中运行,脚本中的os.system(“color”)会导致问题吗?

Python 如果程序在Mac os中运行,脚本中的os.system(“color”)会导致问题吗?,python,python-3.x,macos,ansi-colors,Python,Python 3.x,Macos,Ansi Colors,我有一套Python文本分析程序。我希望菜单和所选的终端输出为各种颜色。通过在开始处包含os.system(“color”),并使用ANSI代码(如代码段所示),我使其能够按需要工作。我的理解是,这些代码是其他操作系统的固有代码,但是如果我包括OS.system(“color”),程序会在Mac上崩溃吗?如果是这样,是否有一个错误捕获例程可以用来防止它 CLR = { "M": "\033[95m", "B": "\033[9

我有一套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
完成:

导入操作系统,系统 如果sys.platform==“win32”: 操作系统(“颜色”) elif sys.platform==“linux”或sys.platform==“linux2”: #Linux特有的东西 elif sys.platform==“darwin”: #MacOS特定的东西
subprocess.Popen(['color'],shell=False)
如果您正在运行的命令不存在,实际上会引发异常——至少在UNIX-y平台上是这样;您需要在Windows上进行测试。请考虑使用诅咒库来为当前活动的终端获取正确的颜色代码——您不希望假设用户当前使用的终端是其操作系统的默认值。(即使存在这种情况;例如,在Linux-y系统上,不同的发行版将使用具有不同终端模拟器的不同桌面环境,并且运行GUI的系统的术语值将与不运行GUI的系统的术语值不同)。