ما هو Config Parser؟
تُستخدم وحدة configparser في Python للعمل مع ملفات التكوين.
يشبه إلى حد كبير ملفات Windows INI.
يمكنك استخدامه لإدارة ملفات التكوين التي يمكن تحريرها بواسطة المستخدم لتطبيق ما.
يتم تنظيم ملفات التكوين في أقسام ، ويمكن أن يحتوي كل قسم على أزواج من الاسم والقيمة لبيانات التكوين.
يتم تحديد أقسام ملف التكوين من خلال البحث عن الأسطر التي تبدأ بـ [ and ending with ].
القيمة الموجودة بين قوسين مربعين هي اسم القسم ، ويمكن أن تحتوي على أي أحرف باستثناء الأقواس المربعة.
يتم سرد الخيارات واحدة في كل سطر داخل قسم.
يبدأ السطر باسم الخيار ، والذي يتم فصله عن القيمة بنقطتين (:) أو علامة التساوي (=).
يتم تجاهل المسافة البيضاء حول الفاصل عند تحليل الملف.
قد يبدو نموذج ملف التكوين مع القسم “bug_tracker” وثلاثة خيارات على النحو التالي:
[bug_tracker]
url = http://localhost:8080/bugs/
username = dhellmann
password = SECRET
استعمال شائع
الاستخدام الأكثر شيوعًا لملف التكوين هو أن يقوم المستخدم أو مسؤول النظام بتحرير الملف باستخدام محرر نص عادي لتعيين الإعدادات الافتراضية لسلوك التطبيق ، ومن ثم الحصول على التطبيق اقرأ الملفوتحليلها والتصرف بناءً على محتوياتها.
مثال على ذلك هو ملف تكوين MySQL.
سيقرأ البرنامج النصي أدناه ملف التكوين /etc/mysql/debian.cnf للحصول على تفاصيل تسجيل الدخول إلى MySQL ، والاتصال بـ MySQL واطلب منه قائمة بجميع قواعد البيانات ، وتصفح هذه القائمة باستدعاء mysqldump على كل منها.
يعتمد هذا البرنامج النصي على مقتطف الشفرة الذي وجدته فيه http://codepoets.co.uk/2010/python-script-to-backup-mysql-databases-on-debian/
النسخ الاحتياطي لجميع قواعد بيانات MySQL ، واحدة في كل ملف مع طابع زمني في النهاية.
#Importing the modules
import os
import ConfigParser
import time
# On Debian, /etc/mysql/debian.cnf contains 'root' a like login and password.
config = ConfigParser.ConfigParser()
config.read("/etc/mysql/debian.cnf")
username = config.get('client', 'user')
password = config.get('client', 'password')
hostname = config.get('client', 'host')
filestamp = time.strftime('%Y-%m-%d')
# Get a list of databases with :
database_list_command="mysql -u %s -p%s -h %s --silent -N -e 'show databases'" % (username, password, hostname)
for database in os.popen(database_list_command).readlines():
database = database.strip()
if database == 'information_schema':
continue
if database == 'performance_schema':
continue
filename = "/backups/mysql/%s-%s.sql" % (database, filestamp)
os.popen("mysqldump --single-transaction -u %s -p%s -h %s -d %s | gzip -c > %s.gz" % (username, password, hostname, database, filename))
لمزيد من قراءة ConfigParser ، يرجى الاطلاع على هذه الروابط:
http://www.doughellmann.com/PyMOTW/ConfigParser/
http://docs.python.org/2/library/configparser.html