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

问题描述

我有一组 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...