How to read and write INI file with Python3?
我需要用python3读、写和创建一个ini文件。
菲尼
1 2 | default_path ="/path/name/" default_file ="file.txt" |
Python文件:
1 2 3 4 5 6 7 8 9 10 11 12 | # Read file and and create if it not exists config = iniFile( 'FILE.INI' ) # Get"default_path" config.default_path # Print (string)/path/name print config.default_path # Create or Update config.append( 'default_path', 'var/shared/' ) config.append( 'default_message', 'Hey! help me!!' ) |
更新的文件.ini
1 2 3 | default_path ="var/shared/" default_file ="file.txt" default_message ="Hey! help me!!" |
这可以是一个开始:
1 2 3 4 5 6 7 8 9 10 | import configparser config = configparser.ConfigParser() config.read('FILE.INI') print(config['DEFAULT']['path']) # ->"/path/name/" config['DEFAULT']['path'] = '/var/shared/' # update config['DEFAULT']['default_message'] = 'Hey! help me!!' # create with open('FILE.INI', 'w') as configfile: # save config.write(configfile) |
你可以找到更多的在configparser正式文档。
这是一个完整的读,写和更新的例子。
输入文件,test.ini
1 2 3 4 5 | [section_a] string_val = hello bool_val = false int_val = 11 pi_val = 3.14 |
工作代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | try: from configparser import ConfigParser except ImportError: from ConfigParser import ConfigParser # ver. < 3.0 # instantiate config = ConfigParser() # parse existing file config.read('test.ini') # read values from a section string_val = config.get('section_a', 'string_val') bool_val = config.getboolean('section_a', 'bool_val') int_val = config.getint('section_a', 'int_val') float_val = config.getfloat('section_a', 'pi_val') # update existing value config.set('section_a', 'string_val', 'world') # add a new section and some values config.add_section('section_b') config.set('section_b', 'meal_val', 'spam') config.set('section_b', 'not_found_val', 404) # save to a file with open('test_update.ini', 'w') as configfile: config.write(configfile) |
输出文件,测试_ update.ini
1 2 3 4 5 6 7 8 9 | [section_a] string_val = world bool_val = false int_val = 11 pi_val = 3.14 [section_b] meal_val = spam not_found_val = 404 |
原始输入文件仍然是突出的道路。
http://docs.python.org /图书馆/ configparser.html
Python的标准库,这可能是个案。
是一个很好的替代configobj configparser提供更多灵活性:焊料。
- 的部分(subsections嵌套到任何级别)
- 列表值
- 多线值
- 字符串插值(替代)
- 一个强大的集成系统,包括自动验证类型检查/转换部分和允许重复的默认值
- 当写作时间配置文件,所有的评论和configobj preserves勋章成员和部分
- 许多有用的方法和选择的配置文件(如工作需要"刷新"方法)
- 完整的Unicode支持
它有一些画背:
- 你不能设置分隔符,它是
= (拉请求)。 - 你不能有空值,但看起来你可以认为:"这看起来只是
fuabr = fubar 奇怪的和错误的。
一个标准的
1 2 3 4 | class AttrDict(dict): def __init__(self, *args, **kwargs): super(AttrDict, self).__init__(*args, **kwargs) self.__dict__ = self |
我们可以使用这个类在
1 2 | config = configparser.ConfigParser(dict_type=AttrDict) config.read('application.ini') |
现在我们得到的是:
1 2 | [general] key = value |
AS
1 2 | >>> config._sections.general.key 'value' |