إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

تشغيل التطبيقات والبرامج الخارجية باستخدام بايثون

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • تشغيل التطبيقات والبرامج الخارجية باستخدام بايثون

    لغة بايثون، تلك اللغة الصاعدة التي بدأت تشق طريقها في عالم برمجة التطبيقات والويب، مستفيدة من مميزاتها المتمثلة في سهولة كتابتها وقراءتها، ووضوح عباراتها وخلوها من التعقيد الزائد، مع قوة كبيرة في الأداء توفرها له مجموعة ممتازة من المكتبات البرمجية التي تؤدي كثيرا من العمل بعبارات مختصرة وواضحة.

    اتكلم اليوم عن كيفية تشغيل برنامج خارجي من خلال بايثون.

    يتم ذلك عن طريق استدعاء المكتبة الرئيسية os ، والتي تحوي بدورها مجموعة من الوظائف الخاصة بالتعامل مع نظام التشغيل الذي يعمل عليه بايثون (لينوكس، ويندوز ... وماشابه).
    أحد هذه الوظائف يدعي popen4، يمكن من خلاله تشغيل أي برنامج سبق تنصيبه على نظام التشغيل من خلال تمرير مساره إليه، على سبيل المثال لتشغيل برنامج فايرفوكس على نظام لينوكس (بافتراض انه منصب مسبقا)، نفتح نافذة سطر الاوامر (كونسول) ونكتب الاوامر التالية:

    كود PHP:
    $python
    >>>import os
    >>>os.popen4('firefox'
    وهنا ستلاحظ بدء تشغيل برنامج فايرفوكس، تماما كما لو كنت تستدعيه من خلال سطر الاوامر الاعتيادي.

    ونفس الشيء يصح مع نظام تشغيل ويندوز

    كود PHP:
    >>>import os
    >>>os.popen4('notepad'
    هذا يشغل برنامج نوتباد المرفق مع ويندوز، او بامكانك استخدام الصيغة التالية:

    كود PHP:
    >>>import os
    >>>os.popen4(r'C:\program files\adobe\adobeacrobat.exe'
    لتشغيل برنامج آخر على النظام بإعطاء المسار الكامل للملف التشغيلي.


    إلى هذا الحد تبدو فائدة هذه الوظيفة محدودة ومشابهة لملفات الباتش، او اختصارات سطح المكتب !!ولكن بقليل من التأمل تستطيع اكتشاف قابلياته الكبيرة من خلال استخدامه مع العمليات المختلفة الاخرى في بايثون.

    فلنتفترض على سبيل المثال انك تملك ملفا نصيا فيه مائة رابط لملفات موجودة على النت، صور او برامج او ملفات فيديو كما تشاء، وكل رابط موضوع على سطر كما ترى هنا:

    كود PHP:
    link_list.txt


    http
    ://www.homepage1.com/images/pic1.jpg
    http://www.homepage1.com/images/pic2.gif
    http://www.homepage2.com/images/movie.avi
    http://www.homepage3.com/images/ebook.pdf
    .
    .
    .
    .


    مانحتاجه الآن لكتابة برنامج يقوم بتنزيل هذه الملفات من الانترنت تباعا هو قراءة هذا الملف النصي أولاً، ثم تمرير هذه العناوين واحدا تلو الآخر الى أحد البرامج المختصة بتنزيل الملفات، كبرنامج wget المميز.

    هكذا سيبدو برنامجنا بصيغته النهائية:

    كود PHP:
    #pyDownloader.py

    import os
    file('link_list.txt','r')
    f.readline()
    for 
    link in r:
        
    os.popen4(r'wget -c '+link)
    f.colse() 
    بافتراض ان الملف النصي يقع على نفس مسار برنامجنا هذا، او كتابة المسار الكامل للملف كاختيار ثاني.
    في حالة وجود ذاكرة رام صغيرة على جهازك قد تصادفك بعض المشاكل في استمرار التنزيل، عندما يكون عدد الملفات المطلوب تنزيلها بآن واحد كبيرا !!

    يمكن تجاوز هذا الاشكال من خلال تمرير عدد محدود من الروابط لتنزيلها في كل مرة على شكل وجبات، أو وضع مؤقت زمني في ايعاز wget يقوم بالانتظار لفترة زمنية وجيزة قبل اجراء عملية تنزيل الملف التالي كما ترى هنا على سبيل المثال:

    كود PHP:
        os.popen4(r'wget -c -P -w 2 '+link
    هنا سيقوم برنامجنا بوضع فترات انتظار زمنية مقدارها ثانيتين بين كل عمليتي تنزيل، ويمنع انهيار البرنامج بسبب انخفاض موارد الجهاز.


    شكرا للمتابعة

  • #2
    بارك الله فيك درس جميل وممتاز
    نتمنى ان نرى المزيد ..
    ^_^
    GCS

    تعليق


    • #3
      جميـل اخ Sabo والي المزيد ان شاء الله

      تعليق


      • #4
        جميل .. درس مبسط وواضح ..
        Macbook Air: OS X 10.9.2 + Kali Linux 1.0.6

        تعليق


        • #5
          ماشاء الله

          بارك الله فيك أخى ؛ وعافاك وعفا عنك


          just a User innately
          اللهم اهدنا إلى الطيب من القول ؛ واهدنا إلى صراط الحميد

          تعليق


          • #6
            مشكور اخي على الشرح الجميل

            عندي سؤال

            wget -c -P -w 2
            كيف اعرف البارمترات اللي تضيفها بعد اسم البرنامج من اين احصل عليها وكيف اعرف وضيفة كل واحد منها

            وشكرا لك مره اخرى

            تعليق


            • #7
              شكرا لجميع الاخوة الذين تفضلوا بالمرور على المشاركة أو الرد عليها.

              بالنسبة لتساؤل الاخ geo_saleh عن بارامترات برنامج wget فيمكنك التعرف عليها بشكل مفصل من خلال وثائق البرنامج، التي تجدها بعدة صيغ قابلة للتنزيل او قراءتها اونلاين على هذا الرابط:

              http://www.gnu.org/software/wget/manual/

              تعليق


              • #8
                السلام عليكم
                رائع جدا اخي العزيز
                الف شكر.

                تعليق


                • #9
                  مشكور اخي sabo .
                  تحياتي..

                  تعليق

                  يعمل...
                  X