📜  Python|读取 .ini 配置文件

📅  最后修改于: 2022-05-13 01:55:47.457000             🧑  作者: Mango

Python|读取 .ini 配置文件

本文旨在阅读以常见的.ini配置文件格式编写的配置文件。 configparser模块可用于读取配置文件。

代码 #1:配置文件

abc.ini
  
; Sample configuration file
[installation]
library = %(prefix)s/lib
include = %(prefix)s/include
bin = %(prefix)s/bin
prefix = /usr/local
  
# Setting related to debug configuration
[debug]
pid-file = /tmp/spam.pid
show_warnings = False
log_errors = true
[server]
nworkers: 32
port: 8080
root = /www/root
signature:

代码 #2:读取文件并提取值。

from configparser import ConfigParser
  
configur = ConfigParser()
print (configur.read('config.ini'))
  
print ("Sections : ", configur.sections())
print ("Installation Library : ", configur.get('installation','library'))
print ("Log Errors debugged ? : ", configur.getboolean('debug','log_errors'))
print ("Port Server : ", configur.getint('server','port'))
print ("Worker Server : ", configur.getint('server','nworkers'))
  

输出 :

['config.ini']
Sections : ['installation', 'debug', 'server']
Installation Library : '/usr/local/lib'
Log Errors debugged ? : True
Port Server : 8080
Worker Server : 32

还可以使用cfg.write()方法修改配置并将其写回文件。

代码#3:

configur.set('server','port','9000')
configur.set('debug','log_errors','False')
  
import sys
configur.write(sys.stdout)

输出 :

[installation]
library = %(prefix)s/lib
include = %(prefix)s/include
bin = %(prefix)s/bin
prefix = /usr/local

[debug]
log_errors = False
show_warnings = False

[server]
port = 9000
nworkers = 32
pid-file = /tmp/spam.pid
root = /www/root
  • 配置文件非常适合为您的程序指定配置数据。在每个配置文件中,值被分组到不同的部分(例如,“安装”、“调试”和“服务器”)。
  • 然后,每个部分对该部分中的各种变量都有一个特定的值。出于同样的目的,配置文件和使用Python源文件之间存在一些显着差异。
  • 首先,语法更加宽松和“草率”。

配置文件中使用的名称也被假定为不区分大小写,如下面的代码所示 -

configur.get('installation','PREFIX')
  
configur.get('installation','prefix')

输出 :

'/usr/local'
'/usr/local'

解析值时,getboolean() 等方法会寻找任何合理的值。例如,这些都是等价的。

log_errors = true
log_errors = TRUE
log_errors = Yes
log_errors = 1

配置记录和Python代码之间最值得注意的对比是,与脚本相比,配置文件不是以自上而下的方式执行的。而是完全读取文件。如果进行变量替换,则在事后稍后进行。例如,前缀变量是在碰巧使用它的不同变量之后分配的,这并没有什么区别。

[installation]
library = %(prefix)s/lib
include = %(prefix)s/include
bin = %(prefix)s/bin
prefix = /usr/local

可以一起读取多个配置文件,并且可以使用 ConfigParser 将它们的结果合并到一个配置中,这使得它的使用非常特别。

示例 – 用户创建了自己的配置文件,看起来像。

; ~/.config.ini
[installation]
prefix = /Users/beazley/test
[debug]
log_errors = False

这个文件可以通过单独读取与之前的配置合并

代码#4:

import os
  
# Previously read configuration
print (configur.get('installation', 'prefix'))
  
# Merge in user-specific configuration
print (configur.read(os.path.expanduser('~/.config.ini')))
print (configur.get('installation', 'prefix'))
print (configur.get('installation', 'library'))
  
print (configur.getboolean('debug', 'log_errors'))

输出 :

'/usr/local' 
['/Users/HP/.config.ini']
'/Users/HP/test'
'/Users/HP/test/lib'
False