txt - escribir una lista en un archivo python
¿Cómo leer y escribir archivos INI con Python3? (5)
Aquí hay un ejemplo completo de lectura, actualización y escritura.
Archivo de entrada, test.ini
[section_a]
string_val = hello
bool_val = false
int_val = 11
pi_val = 3.14
Código de trabajo.
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)
Archivo de salida, test_update.ini
[section_a]
string_val = world
bool_val = false
int_val = 11
pi_val = 3.14
[section_b]
meal_val = spam
not_found_val = 404
El archivo de entrada original permanece intacto.
Necesito leer, escribir y crear un archivo INI con Python3.
FILE.INI
default_path = "/path/name/"
default_file = "file.txt"
Archivo de Python:
# read file and if not exists
ini = iniFile( ''FILE.INI'' )
# Get and Print Config Line "default_path"
getLine = ini.default_path
# Print (string)/path/name
print getLine
# Append new line and if exists edit this line
ini.append( ''default_path'' , ''var/shared/'' )
ini.append( ''default_message'' , ''Hey! help me!!'' )
ACTUALIZAR ARCHIVO.INI
default_path = "var/shared/"
default_file = "file.txt"
default_message = "Hey! help me!!"
El ConfigParser
estándar normalmente requiere acceso a través de config[''section_name''][''key'']
, que no es divertido. Una pequeña modificación puede proporcionar acceso a los atributos:
class AttrDict(dict):
def __init__(self, *args, **kwargs):
super(AttrDict, self).__init__(*args, **kwargs)
self.__dict__ = self
AttrDict
es una clase derivada de dict
que permite el acceso mediante claves de diccionario y acceso a atributos: eso significa que ax is a[''x'']
Podemos usar esta clase en ConfigParser
:
config = configparser.ConfigParser(dict_type=AttrDict)
config.read(''application.ini'')
y ahora tenemos application.ini
con:
[general]
key = value
como
>>> config._sections.general.key
''value''
Esto puede ser algo para empezar:
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)
Puede encontrar más en la documentación oficial del configurador .
docs.python.org/library/configparser.html
La biblioteca estándar de Python puede ser útil en este caso.
ConfigObj es una buena alternativa a ConfigParser que ofrece mucha más flexibilidad:
- Secciones anidadas (subsecciones), a cualquier nivel
- Valores de lista
- Múltiples valores de línea
- Interpolación de cadenas (sustitución)
- Integrado con un poderoso sistema de validación que incluye secciones automáticas de verificación / conversión de tipos repetidas y permite valores predeterminados
- Al escribir archivos de configuración, ConfigObj conserva todos los comentarios y el orden de miembros y secciones
- Muchos métodos y opciones útiles para trabajar con archivos de configuración (como el método de "recarga")
- Soporte total Unicode
Tiene algunas desventajas:
- No puede establecer el delimitador, tiene que ser
=
... ( solicitud de extracción ) - No puede tener valores vacíos, así que puede, pero se ven como "me gusta":
fuabr =
lugar de solofubar
que se ve raro e incorrecto.