Table des matières
Pourquoi écrire un fichier de configuration
ini
json
toml
yaml
结尾
Maison développement back-end Tutoriel Python Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python

Apr 11, 2023 pm 10:22 PM
python 配置文件

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python

Pourquoi écrire un fichier de configuration

Nous pouvons écrire directement ce fichier corrigé dans un fichier .py, tel que settings.py ou config.py. L'avantage est que nous pouvons directement en importer des parties via l'importation dans. le même projet ; Mais si nous devons partager des fichiers de configuration sur d'autres plates-formes non Python, écrire un seul .py n'est pas un bon choix. À ce stade, nous devons choisir un type de fichier de configuration commun pour stocker ces parties fixes. Actuellement, les types de formats de fichiers de configuration couramment utilisés et populaires incluent principalement ini, json, toml, yaml, xml, etc. Nous pouvons analyser ces types de fichiers de configuration via des bibliothèques standard ou des bibliothèques tierces.

ini

ini signifie Initialiser. Au début, c'était le format de stockage des fichiers de configuration sous Windows. La méthode d'écriture du fichier ini est facile à comprendre et est souvent relativement simple. Elle se compose généralement d'une section, d'une clé et d'une valeur, comme la forme suivante :

[localdb]
host = 127.0.0.1
user = root
password = 123456
port = 3306
database = mysql
Copier après la connexion

Python lui-même a une bibliothèque standard de configparser intégrée, nous pouvons directement l'utiliser pour analyser. fichiers ini. Par exemple, nous enregistrons le contenu ci-dessus dans un fichier nommé db.ini, puis utilisons la méthode read() pour analyser et lire, et enfin utilisons la méthode items() pour obtenir toutes les paires clé-valeur sous le nœud spécifié.

>>> from configparser import ConfigParser
>>> cfg = ConfigParser()
>>> cfg.read("/Users/Bobot/db.ini")
['/Users/Bobot/db.ini']
>>> cfg.items("localdb")
[('host', '127.0.0.1'), ('user', 'root'), ('password', '123456'), ('port', '3306'), ('database', 'mysql')]
Copier après la connexion

Il est à noter que configparser présente la valeur sous forme de chaîne par défaut, c'est pourquoi nous n'ajoutons pas de guillemets dans le fichier db.ini mais écrivons directement le littéral ci-dessus.

Après avoir obtenu la paire clé-valeur, je l'ai en fait convertie directement en dictionnaire, puis j'ai décompressé les paramètres pour garder le code simple :

#!pip install pymysql
import pymysql
from configparser import ConfigParser
cfg = ConfigParser()
cfg.read("/Users/Bobot/db.ini")
db_cfg = dict(cfg.items("localdb"))
con = pymysql.connect(**db_cfg)
Copier après la connexion

json

le format json peut être considéré comme un format de fichier courant pour nous, qui est également un format d'échange de données populaire sur Internet. De plus, json est parfois aussi un type de fichier de configuration.

Par exemple, npm (un outil de gestion de packages JavaScript similaire au pip de Python) et l'éditeur VSCode largement utilisé produit par Microsoft utilisent tous json pour écrire les paramètres de configuration.

Comme configparser, Python dispose également d'une bibliothèque standard json intégrée, qui peut importer du contenu json de fichiers et de chaînes via les méthodes Load() et Loads().

{
 "localdb":{
 "host": "127.0.0.1",
 "user": "root",
 "password": "123456",
 "port": 3306,
 "database": "mysql"
 }
}
Copier après la connexion

Nous enregistrons le contenu ci-dessus sous db.json, puis le lisons et l'analysons. Il est relativement simple et facile pour la bibliothèque json de lire les fichiers json, et il est facile de l'analyser dans les objets du dictionnaire Python.

>>> import json
>>> from pprint import pprint
>>>
>>> with open('/Users/Bobot/db.json') as j:
... cfg = json.load(j)['localdb']
...
>>> pprint(cfg)
{'database': 'mysql',
'host': '127.0.0.1',
'password': '123456',
'port': 3306,
'user': 'root'}
Copier après la connexion

L'inconvénient de l'utilisation de la configuration de fichiers json est que la norme de syntaxe est strictement limitée. L'une des critiques est qu'il est impossible d'y écrire des commentaires, à moins d'utiliser d'autres surensembles de type json comme alternatives (fichiers de configuration de paramètres json). dans VSCode peut écrire des commentaires est une alternative) ; en même temps, il y a le problème d'une imbrication trop profonde, qui peut facilement conduire à des erreurs, et il ne convient pas pour écrire des informations de configuration de paramètres longues ou complexes.

toml

le format toml (ou format tml) est un format de fichier de configuration proposé par le co-fondateur de Github, Tom Preston-Werner. Selon Wikipédia, toml a été proposé pour la première fois en juillet 2013, il y a sept ans ; il est également quelque peu similaire au fichier yaml dont nous parlerons plus tard sous certains aspects, mais si vous connaissez le yaml, lorsque la spécification comporte des dizaines de pages (oui, c'est vraiment des dizaines de pages...), vous n'êtes peut-être pas vraiment disposé à écrire un fichier de configuration aussi compliqué, donc le format toml est un bon choix.

Le format de toml est à peu près le suivant :

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python

On peut voir d'ici que toml est quelque peu similaire au fichier ini mentionné précédemment. Mais cela s’étend bien plus que ini.

Dans l'exemple d'image, nous pouvons voir qu'en plus des chaînes de base, les horodatages, les valeurs booléennes, les tableaux, etc. sont également pris en charge et le style est très similaire à la méthode d'écriture native de Python.

Bien sûr, je ne présenterai pas ici trop de spécifications du format toml. Quelqu'un a déjà traduit le document de spécification officiel, et les amis intéressés peuvent le consulter directement.

Les développeurs ont créé des « roues » correspondantes pour les types de fichiers de configuration adaptés à Python Actuellement, la version avec le plus d'étoiles sur Github est la version uiri/toml, mais cette version n'a passé que la spécification toml de la version v0.5, mais c'est assez simple à utiliser. Nous pouvons l'installer via la commande pip

pip install toml
Copier après la connexion

La méthode d'analyse de cette bibliothèque est très simple, et elle est quelque peu similaire à l'utilisation d'analyse de la bibliothèque json, c'est-à-dire via load(). ou charges() Analyser; convertir et exporter de la même manière.

Par exemple, nous écrivons maintenant le contenu suivant dans config.toml :

[mysql]
host = "127.0.0.1"
user = "root"
port = 3306
database = "test"
 [mysql.parameters]
 pool_size = 5
 charset = "utf8"
 [mysql.fields]
 pandas_cols = [ "id", "name", "age", "date"]
Copier après la connexion

Ensuite, nous pouvons le lire via la méthode load() dans la bibliothèque toml :

>>> import toml
>>> import os
>>> from pprint import pprint
>>> cfg = toml.load(os.path.expanduser("~/Desktop/config.toml"))
>>> pprint(cfg)
{'mysql': {'database': 'test',
'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
'host': '127.0.0.1',
'parameters': {'charset': 'utf8', 'pool_size': 5},
'port': 3306,
'user': 'root'}}
Copier après la connexion

Vous pouvez voir que le fichier toml est indirectement converti. Il a Devenir un type de dictionnaire Bien sûr, c'est ainsi que la version json est écrite (il suffit de remplacer les guillemets simples par des guillemets doubles), ce qui nous permet d'appeler ou de transmettre des paramètres plus tard.

yaml

yaml 格式(或 yml 格式)是目前较为流行的一种配置文件,它早在 2001 由一个名为 Clark Evans 的人提出;同时它也是目前被广泛使用的配置文件类型,典型的就是 Docker 容器里的 docker-compose.yml 配置文件,如果经常使用 Docker 进行部署的人对此不会陌生。

yaml 文件的设计从 Python、XML 等地方获取灵感,所以在使用时能很清楚地看到这些部分的影子。

在上一节 toml 内容里我曾提到,yaml 的规范内容可以说是冗长和复杂,足足有80页之多。

Hyper complet ! Méthodes courantes d'écriture de fichiers de configuration en Python

所以感兴趣的朋友可以再自行了解相关用法。

YAML 官方早已经提供了相应的 Python 库进行支持,即 PyYAML;当然也同样需要我们事先进行安装:

pip install pyyaml
Copier après la connexion

同 json 库和 toml 库一样,通过 load() 方法来进行加载。

需要注意的是,使用 load() 方法会存在一定的安全隐患,从思科 Talos 的这份报告中我们可以看到,如果加载了未知或不信任的 yaml 文件,那么有可能会存在被攻击的风险和网络安全隐患,因为它能够直接调用相应的 Python 函数来执行为攻击者所需要的命令,比如说在 yaml 文件中写入这么一段:

# 使用Linux和macOS的朋友不要轻易尝试
!!python/object/apply:os.system ["rm -rf /"]
Copier après la connexion

因此最好是使用 safe_load() 来代替 load() 方法。

这和 Python 内置的 string 标准库中 Template 类的 substitute() 模板方法一样存在着同样的安全隐患,所以使用 safe_substitute() 来替代是一样的道理。

如我们现在将之前的一些配置信息写入 config.yaml 文件中:

mysql:
 host: "127.0.0.1"
 port: 3306
 user: "root"
 password: "123456"
 database: "test"
 parameter:
 pool_size: 5
 charset: "utf8"
 fields:
pandas_cols:
 - id
 - name
 - age
 - date
Copier après la connexion

然后我们通过 safe_load() 方法进行解析:

>>> import os
>>> from pprint import pprint
>>>
>>> with open(os.path.expanduser("~/config.yaml"), "r") as config:
... cfg = yaml.safe_load(config)
...
>>> pprint(cfg)
{'mysql': {'database': 'test',
'fields': {'pandas_cols': ['id', 'name', 'age', 'date']},
'host': '127.0.0.1',
'parameter': {'charset': 'utf8', 'pool_size': 5},
'password': '123456',
'port': 3306,
'user': 'root'}}
Copier après la connexion

可以看到最后结果和前面的 toml 库的解析结果基本一致。

结尾

本文列举了一些主流且常见的配置文件类型及其 Python 的读取方法,可能有的读者会发现当中没有 xml 格式类型的内容。对于 xml 配置文件可能与 Java 系语言打交道的朋友遇见得会多一些,但 xml 文件的可读性实在是让人望而生畏;对 xml 文件不了解的朋友可以使用 Chrome 浏览器随便进入一个网站然后按下 F12 进入开发者后查看那密密麻麻的 html 元素便是 .xml 的缩影。

除了这些主流的配置文件类型之外,像一些 .cfg、.properties 等都可以作为配置文件,甚至和开头提到的那样,你单独用一个 .py 文件来书写各类配置信息作为配置文件进行导入都是没问题,只是在跨语言共享时可能会有些障碍。因此本文就不过多介绍,感兴趣的朋友可以进一步自行了解。

在本文里列举的配置文件类型其复杂性由上到下依次增加:ini

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL doit-il payer MySQL doit-il payer Apr 08, 2025 pm 05:36 PM

MySQL a une version communautaire gratuite et une version d'entreprise payante. La version communautaire peut être utilisée et modifiée gratuitement, mais le support est limité et convient aux applications avec des exigences de stabilité faibles et des capacités techniques solides. L'Enterprise Edition fournit une prise en charge commerciale complète pour les applications qui nécessitent une base de données stable, fiable et haute performance et disposées à payer pour le soutien. Les facteurs pris en compte lors du choix d'une version comprennent la criticité des applications, la budgétisation et les compétences techniques. Il n'y a pas d'option parfaite, seulement l'option la plus appropriée, et vous devez choisir soigneusement en fonction de la situation spécifique.

Comment utiliser MySQL après l'installation Comment utiliser MySQL après l'installation Apr 08, 2025 am 11:48 AM

L'article présente le fonctionnement de la base de données MySQL. Tout d'abord, vous devez installer un client MySQL, tel que MySQLWorkBench ou le client de ligne de commande. 1. Utilisez la commande MySQL-UROot-P pour vous connecter au serveur et connecter avec le mot de passe du compte racine; 2. Utilisez Createdatabase pour créer une base de données et utilisez Sélectionner une base de données; 3. Utilisez CreateTable pour créer une table, définissez des champs et des types de données; 4. Utilisez InsertInto pour insérer des données, remettre en question les données, mettre à jour les données par mise à jour et supprimer les données par Supprimer. Ce n'est qu'en maîtrisant ces étapes, en apprenant à faire face à des problèmes courants et à l'optimisation des performances de la base de données que vous pouvez utiliser efficacement MySQL.

Comment optimiser les performances MySQL pour les applications de haute charge? Comment optimiser les performances MySQL pour les applications de haute charge? Apr 08, 2025 pm 06:03 PM

Guide d'optimisation des performances de la base de données MySQL dans les applications à forte intensité de ressources, la base de données MySQL joue un rôle crucial et est responsable de la gestion des transactions massives. Cependant, à mesure que l'échelle de l'application se développe, les goulots d'étranglement des performances de la base de données deviennent souvent une contrainte. Cet article explorera une série de stratégies efficaces d'optimisation des performances MySQL pour garantir que votre application reste efficace et réactive dans des charges élevées. Nous combinerons des cas réels pour expliquer les technologies clés approfondies telles que l'indexation, l'optimisation des requêtes, la conception de la base de données et la mise en cache. 1. La conception de l'architecture de la base de données et l'architecture optimisée de la base de données sont la pierre angulaire de l'optimisation des performances MySQL. Voici quelques principes de base: sélectionner le bon type de données et sélectionner le plus petit type de données qui répond aux besoins peut non seulement économiser un espace de stockage, mais également améliorer la vitesse de traitement des données.

HaDIDB: une base de données légère et évolutive horizontalement dans Python HaDIDB: une base de données légère et évolutive horizontalement dans Python Apr 08, 2025 pm 06:12 PM

HaDIDB: Une base de données Python évolutive de haut niveau légère HaDIDB (HaDIDB) est une base de données légère écrite en Python, avec un niveau élevé d'évolutivité. Installez HaDIDB à l'aide de l'installation PIP: PiPinStallHaDIDB User Management Créer un utilisateur: CreateUser () pour créer un nouvel utilisateur. La méthode Authentication () authentifie l'identité de l'utilisateur. FromHadidb.OperationMportUserUser_OBJ = User ("Admin", "Admin") User_OBJ.

Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Méthode de Navicat pour afficher le mot de passe de la base de données MongoDB Apr 08, 2025 pm 09:39 PM

Il est impossible de visualiser le mot de passe MongoDB directement via NAVICAT car il est stocké sous forme de valeurs de hachage. Comment récupérer les mots de passe perdus: 1. Réinitialiser les mots de passe; 2. Vérifiez les fichiers de configuration (peut contenir des valeurs de hachage); 3. Vérifiez les codes (May Code Hardcode).

MySQL a-t-il besoin d'Internet MySQL a-t-il besoin d'Internet Apr 08, 2025 pm 02:18 PM

MySQL peut s'exécuter sans connexions réseau pour le stockage et la gestion des données de base. Cependant, la connexion réseau est requise pour l'interaction avec d'autres systèmes, l'accès à distance ou l'utilisation de fonctionnalités avancées telles que la réplication et le clustering. De plus, les mesures de sécurité (telles que les pare-feu), l'optimisation des performances (choisissez la bonne connexion réseau) et la sauvegarde des données sont essentielles pour se connecter à Internet.

MySQL Workbench peut-il se connecter à MariaDB MySQL Workbench peut-il se connecter à MariaDB Apr 08, 2025 pm 02:33 PM

MySQL Workbench peut se connecter à MARIADB, à condition que la configuration soit correcte. Sélectionnez d'abord "MariADB" comme type de connecteur. Dans la configuration de la connexion, définissez correctement l'hôte, le port, l'utilisateur, le mot de passe et la base de données. Lorsque vous testez la connexion, vérifiez que le service MARIADB est démarré, si le nom d'utilisateur et le mot de passe sont corrects, si le numéro de port est correct, si le pare-feu autorise les connexions et si la base de données existe. Dans une utilisation avancée, utilisez la technologie de mise en commun des connexions pour optimiser les performances. Les erreurs courantes incluent des autorisations insuffisantes, des problèmes de connexion réseau, etc. Lors des erreurs de débogage, analysez soigneusement les informations d'erreur et utilisez des outils de débogage. L'optimisation de la configuration du réseau peut améliorer les performances

MySQL a-t-il besoin d'un serveur MySQL a-t-il besoin d'un serveur Apr 08, 2025 pm 02:12 PM

Pour les environnements de production, un serveur est généralement nécessaire pour exécuter MySQL, pour des raisons, notamment les performances, la fiabilité, la sécurité et l'évolutivité. Les serveurs ont généralement un matériel plus puissant, des configurations redondantes et des mesures de sécurité plus strictes. Pour les petites applications à faible charge, MySQL peut être exécutée sur des machines locales, mais la consommation de ressources, les risques de sécurité et les coûts de maintenance doivent être soigneusement pris en considération. Pour une plus grande fiabilité et sécurité, MySQL doit être déployé sur le cloud ou d'autres serveurs. Le choix de la configuration du serveur approprié nécessite une évaluation en fonction de la charge d'application et du volume de données.

See all articles