How to read a config file using python
我有一个配置文件
1 2 3 | path1 ="D:\test1\first" path2 ="D:\test2\second" path3 ="D:\test2\third" |
我想从
为了使用我的示例,您的文件"abc.txt"需要如下所示:
1 2 3 4 | [your-config] path1 ="D:\test1\first" path2 ="D:\test2\second" path3 ="D:\test2\third" |
然后,在您的软件中,您可以使用配置分析器:
1 | import ConfigParser |
然后在你的代码中:
1 2 3 | configParser = ConfigParser.RawConfigParser() configFilePath = r'c:\abc.txt' configParser.read(configFilePath) |
用例:
1 | self.path = configParser.get('your-config', 'path1') |
*编辑(@human.js)
在python 3中,configparser被重命名为configparser(如本文所述)。
您的文件中需要一个分区:
1 2 3 4 | [My Section] path1 = D:\test1\first path2 = D:\test2\second path3 = D:\test2\third |
然后,读取属性:
1 2 3 4 5 6 7 | import ConfigParser config = ConfigParser.ConfigParser() config.readfp(open(r'abc.txt')) path1 = config.get('My Section', 'path1') path2 = config.get('My Section', 'path2') path3 = config.get('My Section', 'path3') |
由于您的配置文件是普通文本文件,因此只需使用
1 2 3 4 5 6 | file = open("abc.txt", 'r') content = file.read() paths = content.split(" ") #split it into lines for path in paths: print path.split(" =")[1] |
这将打印您的路径。您也可以使用字典或列表来存储它们。
1 2 3 4 5 6 | path_list = [] path_dict = {} for path in paths: p = path.split(" =") path_list.append(p)[1] path_dict[p[0]] = p[1] |
有关在此处读取/写入文件的详细信息。希望这有帮助!
这看起来像是有效的python代码,所以如果文件在项目的类路径上(而不是在其他目录或任意位置),一种方法就是将文件重命名为"abc.py",并使用
当然,如果文件包含将要执行的其他代码,这可能很危险。我不会在任何真实的、专业的项目中使用它,但是对于一个小脚本或交互模式,这似乎是最简单的解决方案。
只需将
如果需要以简单的方式从属性文件中的一个部分读取所有值:
您的
1 2 3 | [SECTION_NAME] key1 = value1 key2 = value2 |
您的代码:
1 2 3 4 5 6 | import configparser config = configparser.RawConfigParser() config.read('path_to_config.properties file') details_dict = dict(config.items('SECTION_NAME')) |
这将为您提供一个字典,其中键与配置文件中的键及其对应值相同。
1 | {'key1':'value1', 'key2':'value2'} |
现在要获取key1的值:
把它全部放在一个只从配置文件读取该节一次的方法中(在程序运行期间第一次调用该方法)。
1 2 3 4 | def get_config_dict(): if not hasattr(get_config_dict, 'config_dict'): get_config_dict.config_dict = dict(config.items('SECTION_NAME')) return get_config_dict.config_dict |
现在调用上述函数并获取所需键的值:
1 2 | config_details = get_config_dict() key_1_value = config_details['key1'] |
——————————————————————————————————————————————————————————————
扩展上述方法,自动逐节读取,然后按节名后跟键名访问。
if not hasattr(get_config_section, 'section_dict'):
get_config_section.section_dict = dict()
for section in config.sections():
get_config_section.section_dict[section] = dict(config.items(section))
return get_config_section.section_dict
访问:
1 2 3 | config_dict = get_config_section() port = config_dict['DB']['port'] |
(此处"db"是配置文件中的节名"port"是"db"部分下的键。)