Jadual Kandungan
Mengapa menulis fail konfigurasi
ini
json
toml
yaml
结尾
Rumah pembangunan bahagian belakang Tutorial Python Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python

Apr 11, 2023 pm 10:22 PM
python Fail konfigurasi

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python

Mengapa menulis fail konfigurasi

Kami boleh menulis fail tetap ini terus ke dalam fail .py, seperti settings.py atau config.py ini ialah ia boleh Di bawah projek yang sama, anda boleh mengimport bahagiannya secara langsung melalui import; tetapi jika kita perlu berkongsi fail konfigurasi pada platform bukan Python yang lain, menulis satu .py bukanlah pilihan yang baik. Pada masa ini kita harus memilih jenis fail konfigurasi biasa untuk menyimpan bahagian tetap ini. Pada masa ini, jenis format fail konfigurasi yang biasa digunakan dan popular terutamanya termasuk ini, json, toml, yaml, xml, dll. Kami boleh menghuraikan jenis fail konfigurasi ini melalui perpustakaan standard atau perpustakaan pihak ketiga.

ini

ini bermaksud Inisialisasikan Pada zaman awal, ia adalah format storan fail konfigurasi pada Windows. Kaedah penulisan fail ini mudah difahami dan selalunya agak mudah Ia biasanya terdiri daripada bahagian, kunci dan nilai, seperti bentuk berikut:

[localdb]
host = 127.0.0.1
user = root
password = 123456
port = 3306
database = mysql
Salin selepas log masuk

Perpustakaan standard configparser terbina dalam Python, kami. boleh terus menggunakannya untuk menghuraikan fail ini. Sebagai contoh, kami menyimpan kandungan di atas dalam fail bernama db.ini, kemudian gunakan kaedah read() untuk menghuraikan dan membaca, dan akhirnya menggunakan kaedah item() untuk mendapatkan semua pasangan nilai kunci di bawah nod yang ditentukan.

>>> 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')]
Salin selepas log masuk

Perlu diambil perhatian bahawa configparser membentangkan nilai dalam bentuk rentetan secara lalai, jadi inilah sebabnya kami tidak menambah petikan dalam fail db.ini tetapi terus menulis sebab literal di atas.

Selepas memperoleh pasangan nilai kunci, saya sebenarnya menukarnya terus kepada kamus, dan kemudian membongkar parameter untuk memastikan kod mudah:

#!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)
Salin selepas log masuk

json

Format json boleh dikatakan sebagai format fail biasa untuk kami, dan ia juga merupakan format pertukaran data yang popular di Internet. Selain itu, json kadangkala juga merupakan jenis fail konfigurasi.

Sebagai contoh, npm (alat pengurusan pakej JavaScript serupa dengan pip Python) dan editor VSCode yang digunakan secara meluas yang dihasilkan oleh Microsoft semuanya menggunakan json untuk menulis parameter konfigurasi.

Seperti configparser, Python juga mempunyai perpustakaan standard json terbina dalam, yang boleh mengimport fail dan rentetan kandungan json melalui kaedah load() dan loads().

{
 "localdb":{
 "host": "127.0.0.1",
 "user": "root",
 "password": "123456",
 "port": 3306,
 "database": "mysql"
 }
}
Salin selepas log masuk

Kami menyimpan kandungan di atas sebagai db.json dan kemudian membaca dan menghuraikannya Agak mudah dan mudah untuk perpustakaan json membaca fail json, dan mudah untuk menghuraikan ke dalam objek kamus 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'}
Salin selepas log masuk

Kelemahan menggunakan konfigurasi fail json ialah standard sintaks adalah terhad dengan ketat Salah satu kritikan adalah mustahil untuk menulis komen di dalamnya, melainkan superset lain jenis json digunakan sebagai. alternatif (boleh ditulis dalam VSCode Fail konfigurasi parameter json beranotasi adalah satu alternatif pada masa yang sama, terdapat masalah bersarang terlalu dalam, yang boleh menyebabkan ralat dengan mudah maklumat konfigurasi.

toml

format toml (atau format tml) ialah format fail konfigurasi yang dicadangkan oleh pengasas bersama Github Tom Preston-Werner. Menurut Wikipedia, toml pertama kali dicadangkan pada Julai 2013, tujuh tahun lalu ia juga agak serupa dengan fail yaml yang akan dibincangkan kemudian dalam beberapa aspek, tetapi jika anda tahu yaml Apabila spesifikasi mempunyai berpuluh-puluh halaman (ya, ia adalah; benar-benar berpuluh-puluh halaman...), anda mungkin tidak benar-benar bersedia untuk menulis fail konfigurasi yang rumit, jadi format toml adalah pilihan yang baik.

Format toml adalah lebih kurang seperti berikut:

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python

Dapat dilihat dari sini bahawa toml agak serupa dengan fail ini yang disebut tadi. Tetapi ia meluas lebih daripada ini.

Dalam contoh gambar kita dapat melihat bahawa sebagai tambahan kepada rentetan asas, seperti cap waktu, nilai Boolean, tatasusunan, dll. disokong lagi, dan gayanya sangat serupa dengan tulisan asli Python.

Sudah tentu, saya tidak akan memperkenalkan terlalu banyak spesifikasi format toml di sini Seseorang telah menterjemah dokumen spesifikasi rasmi, dan rakan yang berminat boleh menyemaknya secara langsung.

Pembangun telah mencipta "roda" yang sepadan untuk jenis fail konfigurasi yang sesuai untuk Python Pada masa ini, versi dengan bintang terbanyak pada Github ialah uiri/toml, tetapi versi ini hanya lulus versi v0.5. toml diseragamkan, tetapi ia agak mudah untuk digunakan Kita boleh memasangnya melalui arahan pip

pip install toml
Salin selepas log masuk

Kaedah penghuraian perpustakaan ini sangat mudah, dan ia juga agak serupa dengan penggunaan penghuraian bagi. perpustakaan json iaitu, penghuraian dilakukan melalui load() atau loads(); penukaran dan eksport juga digunakan dengan cara yang sama.

Sebagai contoh, kita kini menulis kandungan berikut ke dalam 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"]
Salin selepas log masuk

Kemudian kita boleh membacanya melalui kaedah load() dalam perpustakaan 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'}}
Salin selepas log masuk

Anda dapat melihat bahawa fail toml secara tidak langsung ditukar kepada jenis kamus Sudah tentu, beginilah cara versi json ditulis (hanya gantikan petikan tunggal dengan petikan berganda), yang memudahkan panggilan atau pemindahan parameter kami yang berikutnya.

yaml

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

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

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

Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python

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

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

pip install pyyaml
Salin selepas log masuk

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

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

# 使用Linux和macOS的朋友不要轻易尝试
!!python/object/apply:os.system ["rm -rf /"]
Salin selepas log masuk

因此最好是使用 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
Salin selepas log masuk

然后我们通过 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'}}
Salin selepas log masuk

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

结尾

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

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

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

Atas ialah kandungan terperinci Super lengkap! Cara biasa untuk menulis fail konfigurasi dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah Mysql perlu membayar Adakah Mysql perlu membayar Apr 08, 2025 pm 05:36 PM

MySQL mempunyai versi komuniti percuma dan versi perusahaan berbayar. Versi komuniti boleh digunakan dan diubahsuai secara percuma, tetapi sokongannya terhad dan sesuai untuk aplikasi dengan keperluan kestabilan yang rendah dan keupayaan teknikal yang kuat. Edisi Enterprise menyediakan sokongan komersil yang komprehensif untuk aplikasi yang memerlukan pangkalan data yang stabil, boleh dipercayai, berprestasi tinggi dan bersedia membayar sokongan. Faktor yang dipertimbangkan apabila memilih versi termasuk kritikal aplikasi, belanjawan, dan kemahiran teknikal. Tidak ada pilihan yang sempurna, hanya pilihan yang paling sesuai, dan anda perlu memilih dengan teliti mengikut keadaan tertentu.

Cara Menggunakan MySQL Selepas Pemasangan Cara Menggunakan MySQL Selepas Pemasangan Apr 08, 2025 am 11:48 AM

Artikel ini memperkenalkan operasi pangkalan data MySQL. Pertama, anda perlu memasang klien MySQL, seperti MySqlworkbench atau Command Line Client. 1. Gunakan perintah MySQL-Uroot-P untuk menyambung ke pelayan dan log masuk dengan kata laluan akaun root; 2. Gunakan CreateTatabase untuk membuat pangkalan data, dan gunakan Pilih pangkalan data; 3. Gunakan createtable untuk membuat jadual, menentukan medan dan jenis data; 4. Gunakan InsertInto untuk memasukkan data, data pertanyaan, kemas kini data dengan kemas kini, dan padam data dengan padam. Hanya dengan menguasai langkah -langkah ini, belajar menangani masalah biasa dan mengoptimumkan prestasi pangkalan data anda boleh menggunakan MySQL dengan cekap.

Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Bagaimana untuk mengoptimumkan prestasi MySQL untuk aplikasi beban tinggi? Apr 08, 2025 pm 06:03 PM

Panduan Pengoptimuman Prestasi Pangkalan Data MySQL Dalam aplikasi yang berintensifkan sumber, pangkalan data MySQL memainkan peranan penting dan bertanggungjawab untuk menguruskan urus niaga besar-besaran. Walau bagaimanapun, apabila skala aplikasi berkembang, kemunculan prestasi pangkalan data sering menjadi kekangan. Artikel ini akan meneroka satu siri strategi pengoptimuman prestasi MySQL yang berkesan untuk memastikan aplikasi anda tetap cekap dan responsif di bawah beban tinggi. Kami akan menggabungkan kes-kes sebenar untuk menerangkan teknologi utama yang mendalam seperti pengindeksan, pengoptimuman pertanyaan, reka bentuk pangkalan data dan caching. 1. Reka bentuk seni bina pangkalan data dan seni bina pangkalan data yang dioptimumkan adalah asas pengoptimuman prestasi MySQL. Berikut adalah beberapa prinsip teras: Memilih jenis data yang betul dan memilih jenis data terkecil yang memenuhi keperluan bukan sahaja dapat menjimatkan ruang penyimpanan, tetapi juga meningkatkan kelajuan pemprosesan data.

Cara mengoptimumkan prestasi pangkalan data selepas pemasangan MySQL Cara mengoptimumkan prestasi pangkalan data selepas pemasangan MySQL Apr 08, 2025 am 11:36 AM

Pengoptimuman prestasi MySQL perlu bermula dari tiga aspek: konfigurasi pemasangan, pengindeksan dan pengoptimuman pertanyaan, pemantauan dan penalaan. 1. Selepas pemasangan, anda perlu menyesuaikan fail my.cnf mengikut konfigurasi pelayan, seperti parameter innodb_buffer_pool_size, dan tutup query_cache_size; 2. Buat indeks yang sesuai untuk mengelakkan indeks yang berlebihan, dan mengoptimumkan pernyataan pertanyaan, seperti menggunakan perintah menjelaskan untuk menganalisis pelan pelaksanaan; 3. Gunakan alat pemantauan MySQL sendiri (ShowProcessList, ShowStatus) untuk memantau kesihatan pangkalan data, dan kerap membuat semula dan mengatur pangkalan data. Hanya dengan terus mengoptimumkan langkah -langkah ini, prestasi pangkalan data MySQL diperbaiki.

Adakah mysql memerlukan internet Adakah mysql memerlukan internet Apr 08, 2025 pm 02:18 PM

MySQL boleh berjalan tanpa sambungan rangkaian untuk penyimpanan dan pengurusan data asas. Walau bagaimanapun, sambungan rangkaian diperlukan untuk interaksi dengan sistem lain, akses jauh, atau menggunakan ciri -ciri canggih seperti replikasi dan clustering. Di samping itu, langkah -langkah keselamatan (seperti firewall), pengoptimuman prestasi (pilih sambungan rangkaian yang betul), dan sandaran data adalah penting untuk menyambung ke Internet.

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Hadidb: Pangkalan data yang ringan dan berskala mendatar di Python Apr 08, 2025 pm 06:12 PM

Hadidb: Pangkalan data Python yang ringan, tinggi, Hadidb (Hadidb) adalah pangkalan data ringan yang ditulis dalam Python, dengan tahap skalabilitas yang tinggi. Pasang HadIdb menggunakan pemasangan PIP: Pengurusan Pengguna PipInstallHadidB Buat Pengguna: CreateUser () Kaedah untuk membuat pengguna baru. Kaedah pengesahan () mengesahkan identiti pengguna. dariHadidb.OperationImportuserer_Obj = user ("admin", "admin") user_obj.

Bolehkah Mysql Workbench menyambung ke Mariadb Bolehkah Mysql Workbench menyambung ke Mariadb Apr 08, 2025 pm 02:33 PM

MySQL Workbench boleh menyambung ke MariaDB, dengan syarat bahawa konfigurasi adalah betul. Mula -mula pilih "MariaDB" sebagai jenis penyambung. Dalam konfigurasi sambungan, tetapkan host, port, pengguna, kata laluan, dan pangkalan data dengan betul. Apabila menguji sambungan, periksa bahawa perkhidmatan MariaDB dimulakan, sama ada nama pengguna dan kata laluan betul, sama ada nombor port betul, sama ada firewall membenarkan sambungan, dan sama ada pangkalan data itu wujud. Dalam penggunaan lanjutan, gunakan teknologi penyatuan sambungan untuk mengoptimumkan prestasi. Kesilapan biasa termasuk kebenaran yang tidak mencukupi, masalah sambungan rangkaian, dan lain -lain. Apabila kesilapan debugging, dengan teliti menganalisis maklumat ralat dan gunakan alat penyahpepijatan. Mengoptimumkan konfigurasi rangkaian dapat meningkatkan prestasi

See all articles