簡體   English   中英

有沒有更好的方法來組合2個配置文件?

[英]is there a better way to combine 2 config files?

我想獲取2個配置文件:src + dst,並將不存在於dst中但存在於src中的所有節/選項添加到dst。

這是我的看法,有更好的方法嗎?

import argparse
import configparser
import os


def get_config(file_path):
    config = configparser.ConfigParser()
    config.read_file(open(file_path))
    return config

def add_src_2_dst(src_config, dst_config):
    for section in src_config.sections():
        if section in dst_config.sections():
            for k,v in src_config[section].items():
                if k not in dst_config[section].keys():
                    dst_config[section][k] = v
        else:
            dst_config[section] = src_config[section]
    return dst_config

def parse(args_ls):
    parser = argparse.ArgumentParser()
    parser.add_argument('-s', '--source', help='source file path', required=True)
    parser.add_argument('-d', '--dest', help='dest file path', required=True)
    parser.add_argument('-o', '--output', help='path to save dst file', required=True)
    return parser.parse_args(args_ls)

def main(args_ls):
    args = parse(args_ls)
    src = get_config(args.source)
    dst = get_config(args.dest)
    dst = add_src_2_dst(src, dst)
    dst.write(open(args.output,'w+'))

if __name__ == '__main__':
    main(os.sys.argv[1:])

setdefault()方法可能會幫助您:

def add_src_2_dst(src, dst):
    for section in src.sections():
        dst.setdefault(section, src[section])
        for k, v in src[section].items():
            dst[section].setdefault(k, v)
    return dst

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM