الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Inireader

بدأه ahmed_youssef في 17 مارس 2009 · 1 رد · 748 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

INI Reader

السلام عليكــم ورحمـة الله وبركاتــه ،،

اتعرضنا فى كتاب البايثون لموديل ConfigParser لمعالجة ملفات ال ini

على كل حال كتبت مثال ل inireader كتطبيق لإستخدام ال reader "المستخدم فى كتابة ال XMLReader"

على فرض عندنا نص كالتالى

	 txt="""


   [program]
   name=inireader
   version :=1.32
   author:=ahmed youssef
   license:=GPLv3

   [conf]
   downdir:= /home/striky/downs
   torsdir:= /home/striky/tors
   maxsize:= 30

	   """

محتاجين نعمل كذا شئ زى اننا نعرف الأقسام اللى موجودة program, conf والخيارات فيهم وقيمها

بكل بساطة انشئ inireader object

	 ir=INIReader(create_stream(txt))

وانشئ stream من النص او لو كان ملف مرر file object

تقدر توصل لل attributes اما كأنها attributes عادية مثلا

 ir.sections.program
   ir.sections.conf

او تقدر توصلها كأنها مفاتيح keys

 ir.sections['program']

ونفس الشئ بالنسبة للمفاتيح وقيمها

ir.sections.program.license

فى الواقع هى بالفعل مشتقة من dict فتقدر تطبق عمليات ال dict زى get و has_key و keys و values وغيرها

نبدأ بال section object

تقدر تضيف ليه options كالتالى

	 s["name"]="SVM"
	   s['author']="ahmed youssef"
	   s.add_option(Option("license", "GPLv3"))

لحذف option استخدم remove_option

	 s.remove_option("license")

تقدر توصل للoptions كالتالى

	 print "NAME: ", s.name
	   print "LICENSE: ", s['license']

**يستحسن تستخدم الطريقة التانية لأن استخدامها ك attributes هيتم منعه لاحقا

لغرض الsection ربما للطباعة او غيره استخدم render حيث بتقوم بعمل قسم مثالى مكون من اسم الsection والخيارات الخاصة به

ال SectionsDict هتجد منه كائن بإسم sections فى كائن ال inireader ودا مثال على كيفية الإستخدام

 def test():
	   txt="""


   [program]
   name=inireader
   version :=1.32
   author:=ahmed youssef
   license:=GPLv3

   [conf]
   downdir:= /home/striky/downs
   torsdir:= /home/striky/tors
   maxsize:= 30

	   """
	   #print txt
	   #print "-"*10
	   ir=INIReader(create_stream(txt))
	   ir.verbose=False
	   ir.start()

	   print ir.sections.program.render()
	   print "HAS_AUTHOR: ", ir.sections.program.has_option("author")
	   print "REMOVING author..."
	   ir.sections.program.remove_option("author")
	   print ir.sections.program.render()
	   print "SETTING LICENSE..."
	   ir.sections.program.license="Apache"
	   print "NOW license is: ", ir.sections.program.license
	   print ir.sections.program.render()
	   print "NOW setting version.. "
	   ir.sections.program.set_option('version', "3.6")
	   #print "VER: ", ir.sections.program.version
	   print ir.sections.program.render()
	   ir.sections.conf.update({'maxsize':'60', 'downdir':'/home' } )
	   #ir.sections['conf']['maxsize']="40"
	   print ir.sections.conf.maxsize
	   print ir.sections.conf.render()
	   #ir.write()
	   print "LICENSE: ", ir.sections['program'].get('license')
	   print "*" * 20
	   ir.sections.write()

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 18 مارس 2009 في 00:31

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#2

السلام عليكم و رحمة الله

شرح جميل و واضح يا أحمد جزاكم الله خيراً

سبحانك اللهم و بحمدك ، أشهد أن لا إله إلا أنت ، أستغفرك ربي و أتوب إليك

مدونتي

http://www.facebook.com/brmjt