导入模块
import configparser # py3
写入
config = configparser.ConfigParser() config["DEFAULT"] = { 'ServerAliveInterval': '45', 'Compression': 'yes', 'CompressionLevel': '9' } config[''] = {} config['']['User'] = 'hg' config[''] = {} topsecret = config[''] topsecret['Host Port'] = '50022' # mutates the parser topsecret['ForwardX11'] = 'no' # same here config['DEFAULT']['ForwardX11'] = 'yes' # 写入文件 with open('example.ini', 'w') as configfile: config.write(configfile)
读取
config = configparser.ConfigParser() config.read("example.ini") print(config.defaults()) # OrderedDict([('compression', 'yes')]) print(config.sections()) # ['', ''] print(config['']['User']) # hg print(config.options("")) # ['port', 'compression'] print(config.items("")) # [('compression', 'yes'), ('port', '50022')] print(config.get("", "port")) # 50022
修改
print(config.has_section("Name")) # 删除 config.remove_section("Name") # 添加 config.add_section("Name") config["Name"]["name"] = "Tom" config["Name"]["asname"] = "Jimi" # 设置 config.remove_option("Name", "asname") config.set("Name", "name", "Jack") # 保存 config.write(open("example.ini", "w"))
附:ini文件:
[DEFAULT] serveraliveinterval = 45 compression = yes compressionlevel = 9 forwardx11 = yes [] user = hg [] host port = 50022 forwardx11 = no
help(configparser)
""" CLASSES class ConfigParser(RawConfigParser) | ConfigParser implementing interpolation. | | add_section(self, section) | Create a new section in the configuration. Extends | RawConfigParser.add_section by validating if the section name is | a string. | | set(self, section, option, value=None) | Set an option. Extends RawConfigParser.set by validating type and | interpolation syntax on the value. | | defaults(self) | | get(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>) | Get an option value for a given section. | | getboolean(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>) | | getfloat(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>) | | getint(self, section, option, *, raw=False, vars=None, fallback=<object object at 0x0000000002F42120>) | | has_option(self, section, option) | Check for the existence of a given option in a given section. | If the specified `section' is None or an empty string, DEFAULT is | assumed. If the specified `section' does not exist, returns False. | | has_section(self, section) | Indicate whether the named section is present in the configuration. | items(self, section=<object object at 0x0000000002F42120>, raw=False, vars=None) | Return a list of (name, value) tuples for each option in a section. | | options(self, section) | Return a list of option names for the given section name. | popitem(self) | Remove a section from the parser and return it as | read(self, filenames, encoding=None) | Read and parse a filename or a list of filenames. | Return list of successfully read files. | | read_dict(self, dictionary, source='<dict>') | Read configuration from a dictionary. | | read_file(self, f, source=None) | Like read() but the argument must be a file-like object. | | read_string(self, string, source='<string>') | Read configuration from a given string. | | readfp(self, fp, filename=None) | Deprecated, use read_file instead. | | remove_option(self, section, option) | Remove an option. | | remove_section(self, section) | Remove a file section. | | sections(self) | Return a list of section names, excluding [DEFAULT] | | write(self, fp, space_around_delimiters=True) | Write an .ini-format representation of the configuration state. | | clear(self) | D.clear() -> None. Remove all items from D. | | pop(self, key, default=<object object at 0x0000000002F42040>) | D.pop(k[,d]) -> v, remove specified key and return the corresponding value. | If key is not found, d is returned if given, otherwise KeyError is raised. | | setdefault(self, key, default=None) | D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D | | update(*args, **kwds) | D.update([E, ]**F) -> None. Update D from mapping/iterable E and F. | If E present and has a .keys() method, does: for k in E: D[k] = E[k] | If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v | In either case, this is followed by: for k, v in F.items(): D[k] = v | | keys(self) | D.keys() -> a set-like object providing a view on D's keys | | values(self) | D.values() -> an object providing a view on D's values | """