有没有一种优雅的方法来检查是否设置了一组环境变量?

时间:2019-10-23 16:28:37

标签: python-3.x environment-variables

有没有一种方法可以优雅地检查是否设置了已知数量的环境变量?

这是在运行Python 3.7.3的MacOS上。我正在创建一个命令行应用程序,它将连接到Google Sheet和MySQL数据库。在进行所有连接之前,我想采用一种优雅的方法来检查所有环境。变量已设置。如果未设置一个或多个,则不要尝试连接到Google或MySQL。

try: 
    #print("Checking ENVIRONMENT variables...") 
    SPREADSHEET_ID = os.environ['SPREADSHEET_ID']
    SERVICE_ACCESS_FILE = os.environ['SERVICE_ACCESS_FILE']
    MYSQL_HOST = os.environ['MYSQL_HOST']
    MYSQL_DATABASE = os.environ['MYSQL_DATABASE']
    MYSQL_ID = os.environ['MYSQL_UID']
    MYSQL_PWD = os.environ['MYSQL_PWD']
    MTEST = os.environ['MTEST']
    #print("All environment variables are set.")
except KeyError:  
    print("One or more Environment variables do not exist")

上述代码可以正常工作,但是如果我可以的话会很好 有一些干净的方法来检查每个。我可以为每个变量做一个“如果存在”的事情,但这似乎草率。最好将它放在可以处理此问题的函数中吗?也许让用户知道未设置哪些变量?

1 个答案:

答案 0 :(得分:1)

不一定是最好的方法,但这是一个简单的衬里:

env_vars = ['SPREADSHEET_ID', 'SERVICE_ACCESS_FILE', ...]
if not set(os.environ).issuperset(env_vars):
    print("One or more Environment variables do not exist")

甚至更好:

missing = set(env_vars) - set(os.environ)
if missing:
    print("Environment variables do not exist: %s" % missing)