


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
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')]
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)
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" } }
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'}
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:
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
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"]
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'}}
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页之多。
所以感兴趣的朋友可以再自行了解相关用法。
YAML 官方早已经提供了相应的 Python 库进行支持,即 PyYAML;当然也同样需要我们事先进行安装:
pip install pyyaml
同 json 库和 toml 库一样,通过 load() 方法来进行加载。
需要注意的是,使用 load() 方法会存在一定的安全隐患,从思科 Talos 的这份报告中我们可以看到,如果加载了未知或不信任的 yaml 文件,那么有可能会存在被攻击的风险和网络安全隐患,因为它能够直接调用相应的 Python 函数来执行为攻击者所需要的命令,比如说在 yaml 文件中写入这么一段:
# 使用Linux和macOS的朋友不要轻易尝试 !!python/object/apply:os.system ["rm -rf /"]
因此最好是使用 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
然后我们通过 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'}}
可以看到最后结果和前面的 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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk mewujudkan persekitaran maya Python, anda boleh menggunakan modul VENV. Langkah-langkahnya adalah: 1. Masukkan direktori projek untuk melaksanakan persekitaran python-mvenvenv untuk mewujudkan persekitaran; 2. Gunakan Sourceenv/Bin/Aktifkan ke Mac/Linux dan Env \ Scripts \ Aktifkan ke Windows; 3. Gunakan Pakej Pemasangan Pipinstall, PipFreeze> Keperluan.txt untuk mengeksport kebergantungan; 4. Berhati -hati untuk mengelakkan menyerahkan persekitaran maya ke Git, dan mengesahkan bahawa ia berada dalam persekitaran yang betul semasa pemasangan. Persekitaran maya boleh mengasingkan kebergantungan projek untuk mencegah konflik, terutamanya sesuai untuk pembangunan pelbagai projek, dan editor seperti pycharm atau vscode juga

Usetracemalloctotrackmemoryallocationsandidentifyhigh-memorylines;2.Monitorobjectcountswithgcandobjgraphtodetectgrowingobjecttypes;3.Inspectreferencecyclesandlong-livedreferencesusingobjgraph.show_backrefsandcheckforuncollectedcycles;4.Usememory_prof

UseZoneInfoforpython3.9 tOcreatetimezone-awaredateTimesandConvertBetweentimeZoneswitheStimeZone ();

Kaedah mengisi data Excel ke dalam bentuk web menggunakan Python adalah: pertama menggunakan panda untuk membaca data Excel, dan kemudian gunakan selenium untuk mengawal penyemak imbas untuk mengisi secara automatik dan menyerahkan borang; Langkah -langkah khusus termasuk memasang pandas, openpyxl dan perpustakaan selenium, memuat turun pemacu penyemak imbas yang sepadan, menggunakan pandas untuk membaca nama, e -mel, telefon dan medan lain dalam fail data.xlsx, melancarkan pelayar melalui selenium untuk membuka. Bentuk dan proses semua baris data dalam gelung.

Buat persekitaran maya: Jalankan python-mvenvvenv dalam folder projek. 2. Aktifkan persekitaran maya: Windows menggunakan Venv \ Scripts \ Activate, macOS/linux menggunakan sourcevenv/bin/aktif. 3. Buka projek di VSCode dan tekan CTRL Shift P untuk memilih penterjemah Python, tentukan penterjemah dalam persekitaran maya. 4. Sahkan sama ada ia berkesan: Jalankan importsys; cetak (sys.mecutable), dan laluan output harus menunjuk ke folder VENV. 5. Konfigurasi Pilihan: Dayakan python.terminal.a dalam tetapan

Untuk mencantikkan dan mencetak fail JSON, anda perlu menggunakan parameter indent modul JSON. Langkah -langkah khusus ialah: 1. Gunakan json.load () untuk membaca data fail JSON; 2. Gunakan json.dump () dan tetapkan indent kepada 4 atau 2 untuk menulis ke fail baru, dan kemudian fail JSON yang diformat boleh dihasilkan dan percetakan yang dihiasi dapat diselesaikan.

Define__iter __ () toreturntheiteratorObject, biasanya selforaseparateiteratorinstance.2.define__next __ () toreturnthenextvalueanddraisestopiterationWhenexhausted.tocreateareusablecustomiterator, urusan

Jadual Kandungan Apakah analisis sentimen dalam perdagangan cryptocurrency? Mengapa analisis sentimen penting dalam sumber pelaburan cryptocurrency sumber data emosi a. Platform Media Sosial b. Media berita c. Alat untuk analisis sentimen dan teknologi alat yang biasa digunakan dalam analisis sentimen: Teknik yang diterima pakai: Mengintegrasikan analisis sentimen ke dalam strategi perdagangan bagaimana peniaga menggunakannya: Strategi Contoh: Dengan mengandaikan senario senario perdagangan BTC Penetapan: Isyarat Emosi: Tafsiran Pedagang: Keputusan: Batasan dan Risiko Analisis Sentimen Menggunakan Emosi Kajian 2025 baru -baru ini oleh Hamid
