python中读取配置文件的方式

方式1:argparse

argparse,是Python标准库中推荐使用的编写命令行程序的工具。也可以用于读取配置文件。

字典样式的配置文件*.conf

配置文件test1.conf

{
    "game0":
    {
        "ip":"127.0.0.1",
        "port":27182,
        "type":1
    },
    "game1":
    {
        "ip":"127.0.0.1",
        "port":27183,
        "type":0
    },
    "game2":
    {
        "ip":"127.0.0.1",
        "port":27184,
        "type":0
    }
}

  

config.py

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     mytest.py  
   Description :  
   Author :        andy9468
   date:          2018/02/27
   Copyright:      (c) andy9468 2018
-------------------------------------------------
   Change Activity:
                   2018/02/27: 
-------------------------------------------------
"""
import json
import sys
import argparse


def parse_args(args):
    parser = argparse.ArgumentParser(prog="GameServer")
    parser.add_argument('configfile', nargs=1, type=str, help='')
    parser.add_argument('--game', default="game", type=str, help='')
    return parser.parse_args(args)


def parse(filename):
    configfile = open(filename)
    jsonconfig = json.load(configfile)
    configfile.close()
    return jsonconfig


def main(argv):
    args = parse_args(argv[1:])
    print("args:", args)
    config = parse(args.configfile[0])
    info = config[args.game]
    _ip = info['ip']
    _port = info['port']
    print("type:", type(_port))
    _type = info['type']
    print("print:%s,%d,%d" % (_ip, _port, _type))


if __name__ == '__main__':
    main(sys.argv)

  

运行

启动脚本:python test.py test.conf --game=game0

详见:

http://blog.csdn.net/majianfei1023/article/details/49954705

方式2:ConfigParser

ConfigParser是Python读取conf配置文件标准的库。

中括号下设置子项的配置文件*.conf、或者*.ini

test2.conf

[game0]
ip = 127.0.0.1
port = 27182
type = 1

[game1]
ip = 127.0.0.1
port = 27183
type = 0

[game2]
ip = 127.0.0.1
port = 27184
type = 0

  

test2.py

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     test2.py  
   Description :  
   Author :        andy9468
   date:          2018/02/27
   Copyright:      (c) andy9468 2018
-------------------------------------------------
   Change Activity:
                   2018/02/27: 
-------------------------------------------------
"""
# -*- coding:utf-8 -*-

import configparser
import sys


def parse_args(filename):
    cf = configparser.ConfigParser()
    cf.read(filename)

    # return all sections
    secs = cf.sections()
    print("sections:", secs)

    # game0 section
    game0 = cf.options("game0")
    print("game0:", game0)

    items = cf.items("game0")
    print("game0 items:", items)

    # read
    _ip = cf.get("game0", "ip")
    _port = cf.getint("game0", "port")
    _type = cf.getint("game0", "type")
    print("print:%s,%d,%d" % (_ip, _port, _type))


def main(argv):
    parse_args(argv[1])


if __name__ == '__main__':
    main(sys.argv)
    print(sys.argv)

  

动态添加配置:

    # add
    cf.add_section('test3')
    cf.set('test3','id','123')
    cf.write(open(filename,'w'))

  

 详见:

https://www.cnblogs.com/emily-qin/p/8022292.html

方式3:用变量(常量)作为配置文件格式。*.py

配置文件:config.py

LISTEN_PORT = 4444
USE_EPOLL = True

  

导入配置:myread.py

import config
port_num = config.LISTEN_PORT
if config.USE_EPOLL:
    print(config.USE_EPOLL)

  

详见:

http://www.pythontip.com/blog/post/4912/

原文地址:https://www.cnblogs.com/andy9468/p/8477495.html