python - 用python进行变量替换
问题描述
test.conf
我有一个看起来像这样的文本文件(我们称之为):
IP_BASE=10.22.1
IP_NET=${IP_BASE}.0
IP_HOST=${IP_BASE}.1
该文件由 bash 脚本解释。方法很简单
source test.conf
所以变量替换不是问题。现在我们用 Python 脚本替换了 bash 脚本,显然替换不再起作用了。在不接触的情况下解决这个问题的最佳方法是什么test.conf
?
bash
我们可以通过这种方式调用subprocess
并获取变量,但最好使用纯 python 方法。
解决方案
下面似乎工作
pairs = {}
pairs_to_replace = {}
with open('test.conf') as f:
lines = [l.strip() for l in f.readlines()]
for line in lines:
key, val = line.split('=')
if val[0] == '$':
actual_val = val[2:val.find('}')]
pairs_to_replace[key] = (actual_val, val[val.find('}') + 1:])
else:
pairs[key] = val
for key, val in pairs_to_replace.items():
real_value = pairs.get(val[0], '__not_found__')
print(f'{key} --> {real_value}{val[1]}')
输出
IP_NET --> 10.22.1.0
IP_HOST --> 10.22.1.1
推荐阅读
- swift - 图像不使用内容模式
- c# - 验证和显示来自 Xamarin.Forms 的数据库信息
- python - Python中作为时间函数的均方位移
- google-apps-script - 表格:如何将功能复制范围复制到最后一行
- javascript - 有没有办法使用循环和按钮来显示数组数字的乘积和商?
- firebase - 如何查询firestore上的数据列表?
- java - 需要键盘记录器帮助
- mysql - Comparing Row Values Based On User MySQL
- image - libpng 1.6.35:无法使用图像格式为 RGBA 或 BGRA 渲染图像
- python - I want to obtain source of a site after authentication with python mechanize. HTTP Error 403: Forbidden