关于python:如何用Python3读写INI文件?

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奇怪的和错误的。


一个标准的ConfigParser通常需要通过config['section_name']['key']访问,这是没有乐趣。一个属性的修改:提供接入CAN

1
2
3
4
class AttrDict(dict):
    def __init__(self, *args, **kwargs):
        super(AttrDict, self).__init__(*args, **kwargs)
        self.__dict__ = self

AttrDict是一类衍生从dict它允许访问通过访问键和两个字典的属性:这a.x is a['x']均值

我们可以使用这个类在ConfigParser

1
2
config = configparser.ConfigParser(dict_type=AttrDict)
config.read('application.ini')

现在我们得到的是:application.ini

1
2
[general]
key = value

AS

1
2
>>> config._sections.general.key
'value'