python-3.x - 有没有一种优雅的方法来检查是否设置了一组环境变量?
问题描述
有没有办法优雅地检查是否设置了已知数量的环境变量?
这是在 MacOS 上,运行 Python 3.7.3。我正在创建一个命令行应用程序,它将连接到 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")
上述代码工作正常,但如果我能有一些干净的方法来检查每一个,那就太好了。我可以为每个变量做一个“如果存在”之类的事情,但这似乎很草率。把它放在一个可以处理这个问题的函数中会更好吗?也许让用户知道哪些变量没有设置?
解决方案
不一定是最好的方法,但这里有一个简单的方法:
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)
推荐阅读
- mysql - 尝试执行查询时出现 sql 语法错误
- ios - 为什么我在尝试将应用程序上传到应用商店时出现多个错误?
- jwt - Keycloak 静默认证
- ios - CollectionView 在动画期间切断单元格
- unit-testing - 如何对“重置”对象的函数进行单元测试?
- dask - 如何在 Dask 中进行 groupby 过滤
- typescript - Typescript:如何将特定的库方法转换为自定义类型定义
- html - 在当前日期之前/之后列出具有日期属性的文章
- python - 使 tkinter 画布区域更暗
- html - 两个块:一个具有动态宽度,一个与动态一个宽度相同