首页 > 解决方案 > 用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 方法。

标签: pythonbash

解决方案


下面似乎工作

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

推荐阅读