Saya memiliki skrip baris perintah yang saya jalankan dengan banyak argumen. Saya sekarang sampai pada titik di mana saya memiliki terlalu banyak argumen, dan saya ingin memiliki beberapa argumen dalam bentuk kamus juga.
Jadi untuk mempermudah, saya ingin menjalankan skrip dengan file pengaturan sebagai gantinya. Saya tidak benar-benar tahu perpustakaan apa yang digunakan untuk parsing file. Apa praktik terbaik untuk melakukan ini? Tentu saja saya bisa menuntaskan sesuatu, tetapi jika ada perpustakaan untuk ini, saya tidak keberatan.
Beberapa 'tuntutan':
- Daripada menggunakan
pickle
saya ingin itu menjadi file teks lurus ke depan yang dapat dengan mudah dibaca dan diedit. - Saya ingin dapat menambahkan data seperti kamus di dalamnya, yaitu, beberapa bentuk sarang harus didukung.
File contoh semu yang disederhanakan:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Jawaban:
Anda dapat memiliki modul Python biasa, katakan config.py, seperti ini:
dan gunakan seperti ini:
sumber
.py
file dapat dieksekusi, sehingga segala jenis kode dapat dijalankan saat mencoba memuat konfigurasi melaluiimport
. Itu tidak dapat diterima dari sudut pandang keamanan.ast.literal_eval
? docs.python.org/3/library/ast.html#ast.literal_evalKonfigurasi sampel yang Anda berikan sebenarnya adalah YAML yang valid . Faktanya, YAML memenuhi semua permintaan Anda, diimplementasikan dalam sejumlah besar bahasa, dan sangat ramah terhadap manusia. Saya akan sangat menyarankan Anda menggunakannya. Proyek PyYAML menyediakan modul python yang bagus, yang mengimplementasikan YAML.
Untuk menggunakan modul yaml sangat sederhana:
sumber
pip3 install pyyaml
artinya siap mengimpor ke skrip python.Saya menemukan ini yang paling berguna dan mudah digunakan https://wiki.python.org/moin/ConfigParserExamples
Anda cukup membuat "myfile.ini" seperti:
Dan mengambil data seperti:
sumber
Yaml dan Json adalah format file paling sederhana dan paling umum digunakan untuk menyimpan pengaturan / konfigurasi. PyYaml dapat digunakan untuk mengurai yaml. Json sudah menjadi bagian dari python dari 2.5. Yaml adalah superset dari Json. Json akan menyelesaikan sebagian besar kasus penggunaan kecuali string multi-baris di mana melarikan diri diperlukan. Yaml menangani kasus-kasus ini juga.
sumber