instalar example descargar python configparser

python - example - Escribiendo comentarios a archivos con ConfigParser



configparser python example (4)

¿Cómo se pueden escribir comentarios a un archivo dado dentro de las secciones?

Si tengo:

import ConfigParser with open(''./config.ini'', ''w'') as f: conf = ConfigParser.ConfigParser() conf.set(''DEFAULT'', ''test'', 1) conf.write(f)

Obtendré el archivo:

[DEFAULT] test = 1

Pero, ¿cómo puedo obtener un archivo con comentarios dentro de la sección [DEFAULT] , como:

[DEFAULT] ; test comment test = 1

Sé que puedo escribir códigos a archivos haciendo:

import ConfigParser with open(''./config.ini'', ''w'') as f: conf = ConfigParser.ConfigParser() conf.set(''DEFAULT'', ''test'', 1) conf.write(f) f.write(''; test comment'') # but this gets printed after the section key-value pairs

¿Es esta una posibilidad con ConfigParser? Y no quiero probar otro módulo porque necesito mantener mi programa lo más "en stock" posible.


Actualización para 3.7

He estado tratando con configparser últimamente y encontré esta publicación. Pensé que lo actualizaría con información relevante a 3.7.

Ejemplo 1:

config = configparser.ConfigParser(allow_no_value=True) config.set(''SECTION'', ''; This is a comment.'', None)

Ejemplo 2:

config = configparser.ConfigParser(allow_no_value=True) config[''SECTION''] = {''; This is a comment'':None, ''Option'':''Value'')

Ejemplo 3: Si desea mantener su letra mayúscula sin cambios (la opción predeterminada es convertir todos los pares de opciones: valor en minúsculas)

config = configparser.ConfigParser(allow_no_value=True) config.optionxform = str config.set(''SECTION'', ''; This Comment Will Keep Its Original Case'', None)

Donde "SECCIÓN" es el nombre de la sección que distingue entre mayúsculas y minúsculas a la que desea agregar el comentario. El uso de "Ninguno" (sin comillas) en lugar de una cadena vacía ('''') le permitirá establecer el comentario sin dejar un "=".


Puede usar la opción allow_no_value si tiene la versión> = 2.7

Este fragmento de código:

import ConfigParser config = ConfigParser.ConfigParser(allow_no_value=True) config.add_section(''default_settings'') config.set(''default_settings'', ''; comment here'') config.set(''default_settings'', ''test'', 1) with open(''config.ini'', ''w'') as fp: config.write(fp) config = ConfigParser.ConfigParser(allow_no_value=True) config.read(''config.ini'') print config.items(''default_settings'')

creará un archivo ini como este:

[default_settings] ; comment here test = 1


Puedes crear una variable que comienza por # o; personaje:

conf.set(''default_settings'', ''; comment here'', '''') conf.set(''default_settings'', ''test'', 1)

El archivo conf creado es

[default_settings] ; comment here = test = 1

La función ConfigParser.read no analizará el primer valor

config = ConfigParser.ConfigParser() config.read(''config.ini'') print config.items(''default_settings'')

da

[(''test'',''1'')]


También ConfigUpdater usar ConfigUpdater . Tiene muchas más opciones de conveniencia para actualizar los archivos de configuración de una manera mínimamente invasiva.

Básicamente harías:

from configupdater import ConfigUpdater updater = ConfigUpdater() updater.add_section(''DEFAULT'') updater.set(''DEFAULT'', ''test'', 1) updater[''DEFAULT''][''test''].add_before.comment(''test comment'', comment_prefix='';'') with open(''./config.ini'', ''w'') as f: updater.write(f)