Conserver les noms de clé en cas avec ConfigParser standard Python

Vous pouvez lire et écrire des fichiers INI avec le configparser standard de la bibliothèque Python. https://docs.python.org/ja/3/library/configparser.html

Un fichier INI est un format de fichier parfois utilisé pour définir des fichiers, etc., qui se compose de sections, de clés et de valeurs. https://ja.wikipedia.org/wiki/INI%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

Par défaut, configparser est insensible à la casse pour les clés.

import configparser


ini_filename = "sample.ini"
"""Contenu du fichier INI
[General]
Name = hogehoge
"""

parser = configparser.ConfigParser()
parser.read(ini_filename)

"""lettre majuscule/Minuscule/Peut être lu indépendamment du mélange"""
assert parser["General"]["Name"] == "hogehoge", "Mixte"
assert parser["General"]["name"] == "hogehoge", "Minuscule"
assert parser["General"]["NAME"] == "hogehoge", "lettre majuscule"

Cela fonctionne à la fois pour la lecture et l'écriture de fichiers INI.

Le fichier side car utilisé dans le logiciel appelé RawTherapee a le contenu comme un fichier INI. Je voulais tout modifier en même temps, mais les fichiers side-car de RawTherapee sont sensibles à la casse pour les noms de clé. Par conséquent, si vous modifiez / enregistrez tel quel avec la classe ConfigParser, le nom de la clé sera entièrement en minuscules. Un problème est survenu à cause du fait que RawTherapee n'a pas pu être lu correctement.

Cela peut être résolu en définissant la fonction appropriée dans .optionxform de l'instance ConfigParser. Le nom de la clé pour la lecture et l'écriture est le résultat converti par la fonction ʻoptionxform`.

Par conséquent, si vous définissez ʻoptionxform` comme suit, vous pouvez enregistrer le fichier INI tout en conservant le nom de la clé.

parser = configparser.ConfigParser()
parser.optionxform = str
parser.read(ini_filename)

parser["General"]["Name"] = "test"

with open(ini_filename, "w") as fp:
    parser.write(fp)

Recommended Posts

Conserver les noms de clé en cas avec ConfigParser standard Python
Séquence de touches en Python
Séquence de touches en Python
Matrice transposée au standard Python
Rendre la sortie standard non bloquante en Python
Clé étrangère dans SQLite de Python [Note]
Créer un graphique de distribution normale standard en Python
Comment générer "Ketsumaimo" en standard en Python
Séparer les chaînes de cas de chameau mot par mot en Python
Aplatir une liste standard bidimensionnelle irrégulière en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Mon ConfigParser (Python)
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Mon ConfigParser (Python)
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Points à garder à l'esprit lors du développement d'un robot d'exploration en Python
Calcul de l'écart type et du coefficient de corrélation en Python
Entrée clé qui n'attend pas l'entrée clé en Python
Obtenez une sortie standard en temps réel avec le sous-processus Python
Journal de sortie au format JSON avec journalisation standard Python
Calculer la moyenne, la médiane, la plus fréquente, la variance, l'écart type en Python
Peut être utilisé chez les pros de la compétition! Bibliothèque standard Python
[Efficacité du travail] Comment changer les noms de fichiers par lots avec Python