بكل بساطة انا احب لغة بايثون

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


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

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

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

كيفية نسخ الملفات في بايثون

هل تريد نسخ ملف من مكان الى مكان باستخدام بايثون اذن انت في المكان المناسب،ويجب أن تعرف أنه عندما تريد برمجة برامج معقدة أكيد ستحتاج الى التعامل مع الملفات والنظام .

نسخ ملف في بايثون

بدون أي اطالة فلنبدأ عملية نسخ ملف (أقول ملف وليس دليل ) من مكان الى مكان اخر على القرص الصلب.
لدى بايثون وحدة خاصة عالية المستوي للعمل على الملفات تسمى shutil ونستعملها عند نسخ الملفات .
فلنأخذ مثال على هذه الوظيفة والتي ستقوم بنسخ ملف من مكان الى مكان اخر على القرص الصلب  مع اظهار الخطأ في حالة عدم وجود الدليل (المصدر والمستبقل) وفي حالة نسخ الملف الى نفس المكان .

import shutil
 
def copyFile(src, dest):
    try:
        shutil.copy(src, dest)
    # eg. المسار المستقبل أو المصدر متطابقان
    except shutil.Error as e:
        print('Error: %s' % e)
    # eg. المسار المستقبل أو المصدر غير موجود
    except IOError as e:
        print('Error: %s' % e.strerror)

وهذا كل شيء فقد قمنا باستدعاء وحدة shutil وتم نسخ الملف، وفي حالة وجود اي خطأ كعدم وجود دليل المصدر أو المستقبل سيقوم البرنامج بعرض رسالة  Error: No such file or directory .
قم بتجربة البرنامج على جهازك واي استفسار انا بالخدمة .

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

كيفية التحقق من وجود أي ملف على اي دليل مع بايثون

تحدثنا في السابق على طريقة عرض محتويات أي دليل باستخدام لغة بايثون أما اليوم سنتحدث عن كيفية التحقق من وجود ملف ما على أي دليل باستخدام نفس اللغة، في الحقيقة يوجد طرق عديدة للتحقق من وجود الملفات ولكني ساقوم بشرح فعل ذلك باستخدام os.path.isfile().

os.path.exists(path)

قبل التحدث عن معرفة وجود الملف اولا يجب ان نتأكد من وجوده اولا على الدليل باستخدام الدالة
os.path.exists()

import os
os.path.exists("/home/kader/text.txt")

اذا كان الملف موجود فعلا سيقوم بايثون بعرض صح واذا لم يكن موجود سيقوم بعرض خطأ
ولكن مع هذه الدالة لا يمكننا ان نعرف ما اذا كان ملف او عبارة عن دليل وهنا تاتي فائدة الدالة التالية .
os.path.isfile()
بعد تأكدنا من وجود الملف على الدليل علينا الان ان نعرف ما اذا كان عبارة عن ملف أو دليل
 

import os
os.path.isfile("/home/kader/text.txt")

اذا كان text.txt عبارة عن ملف سيقوم بايثون بعرض صح واما اذا كان عبارة عن دليل سيعرض خطا

ولتحقق أيضا من وجود دليل يمكن استخدام الدالة os.path.isdir()

ولمزيد من المعلومات يمكنكم زيارة موقع بايثون

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

استيراد * في بايثون

في هذه التدوينة سنتحدث عن

from module import *

وكيفية عملها ولماذا يجب ان لا نستخدم هذه الطريقة في عملية الاستراد .



استراد * من module
هذا السطر يعني اني اريد الوصول الى جميع الأسماء الموجودة داخل module ومن المفترض اني استطيع استعمال جميع الوظائف والصفوف الموجودة داخل هذا الموديل .

ومن أجل فهم اكبر سنقوم باخذ مثال بانشاء ملف something.py

# something.py

public_variable = 42
_private_variable = 141

def public_function():
    print("I'm a public function! yay!")

def _private_function():
    print("Ain't nobody accessing me from another module...usually")

class PublicClass(object):
    pass

class _WeirdClass(object):
    pass

الان نقوم بتشغيل مترجم بايثونIDLE ونقوم بتشغيل السطر التالي :

from something import *

الان نقوم بتجريب السطور التالية

from something import *
public_variable
42
_private_variable
...
NameError: name '_private_variable' is not defined
public_function()
"I'm a public function! yay!"
_private_function()
...
NameError: name '_private_function' is not defined
c = PublicClass()
c

c = _WeirdClass()
...
NameError: name '_WeirdClass' is not defined

اذاالسطر from something import * قام باستراد جميع الأسماء الموجودة داخل ملف something ماعدا الأسماء التي تبدا ب _ لانها تعني أسماء خاصة .
اذا ما هو الحل؟
لم نقم بذكر بعد __all__ وماذا تعني .
__all__ هي قائمة تحتوي على سلاسل لتحديد وتعريف الرموز الموجودة في module ويتم استخدامها عند عملية استراد *.
عندما لا نقوم بتعريف __all__ فان عملية استراد * ستقوم باستراد جميع الأسماء ما عدا الاسماء التي تبدا بالعلامة _ والتي تعني انها أسماء خاصة .
الان سنقوم بتعريف __all__ في ملف something.py .

# something.py

__all__ = ['_private_variable', 'PublicClass']

# The rest is the same as before

public_variable = 42
_private_variable = 141

def public_function():
    print("I'm a public function! yay!")

def _private_function():
    print("Ain't nobody accessing me from another module...usually")

class PublicClass(object):
    pass

class _WeirdClass(object):
    pass

الان من المفروض عند كتابةالسطر from something import * ان يقوم باستراد كل من _private_variables و PublicClass

>>> from something import *
>>> public_variable
...
NameError: name 'public_variable' is not defined
>>> _private_variable
0
>>> public_function()
...
NameError: name 'public_function' is not defined
>>> _private_function()
...
NameError: name '_private_function' is not defined
>>> c = PublicClass()
>>> c

>>> c = _WeirdClass()
...
NameError: name '_WeirdClass' is not defined

كان هذاهو درسنا اليوم أرجوا أن تكونوا قد استمتعتم واستفدتم وأي تعليق عن الموضوع مرحبا به

أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع

كيفية انشاء حزمة بايثون

عندما يكون لديك العديد من الصفوف classes أو ال modules و تريد ان تنظمها على شكل حزم خاصة اذا كان لديك مشروع ينمو بسرعة كبيرة فمن الحكمة ان ننظمها في حزم وهذه العلمية تشبه وضع الصفوف classes و ال modules في نفس الدليل ومن أجل كل هذا سنقوم بشرح طريقة انشاء الحزم في بايثون .




خطوات لانشاء الحزم في بايثون

  • انشاء دليل وتسميته باسم الحزمة المراد انشاءها
  • وضع جميع الصفوف داخل الدليل 
  • انشاء ملف __init__.py داخل الدليل

هذا كل شئ الطريقة  جد سهلة ولا تتطلب عملية معقدة والملف__init__.py ضروري لان بايثون سيعرف بواسطته ان هذا الدليل عبارة عن حزمة بايثون وليس مجرد دليل او ملف  يحتوي على صفوف وملفات.
على كل حال ماسنقوم بكتابته على هذا الملف هو عبارات استيراد import جميع الصفوف الى حزمتنا.


انشاء حزمة بايثون
سنقوم باشاء حزمة ونقوم بتسميتها Animals حيث تحتوي على 2  module ونقوم بتسميتهما Mammals و Birds .

  1.  انشاء دليل خاص بالحزمة

أولا نقوم بانشاء ديلي ونقوم بتسميته Animals


2.اضافة صفوف
الان نقوم بانشاء مصفوفتين، اولا نقوم بانشاء ملف Mammals.py داخل الدليلونقوم بكتابة الكود التالي بداخله.

class Mammals:
    def __init__(self):
        ''' Constructor for this class. '''
        #انشاء مجموعة من الحيونات 
        self.members = ['Tiger', 'Elephant', 'Wild Cat']
 
 
    def printMembers(self):
        print('Printing members of the Mammals class')
        for member in self.members:
            print('t%s ' % member)

الكود جد سهل حيث لدينا مصفوفة تحتوي على مجموعة من الحيوانات ونقوم بعرض تلك المجموعة .
ملاحظة : عند انشاء حزم بايثون يجب استراد المصفوفات عبر دالة import ولا يمكن تنفيذها مياشرة .

الان نقوم بانشاء ملف اخر ونقوم بتسميته Birds.py ونضعه داخل الدليل Animals ونقوم بكتابة الكود التالي بداخله .

class Birds:
    def __init__(self):
        ''' Constructor for this class. '''
        # انشاء مجموعة من الحيوانت 
        self.members = ['Sparrow', 'Robin', 'Duck']
 
    def printMembers(self):
        print('Printing members of the Birds class')
        for member in self.members:
           print('t%s ' % member)

هذاالكود مشابه للكود الأول .
3 اضافة ملف __init__.py الى الدليل
بعد انشاء هذا الملف نقوم بكتابة الكود التالي بداخله .

from Mammals import Mammals
from Birds import Birds

هذ اكل شيء وهكذا قمنا بانشاء حزمة اسمها Animals ولكي نقوم باختبارها نقوم بانشاء ملف test.py على نفس الدليل السابق ونقوم بكتابة الكود التالي بداخله .

# استراد المصفوفات 
from Animals import Mammals
from Animals import Birds
 
# انشاء كائن للمصفوفة 
myMammal = Mammals()
myMammal.printMembers()
 
# انشاء كائن 
myBird = Birds()
myBird.printMembers()
أرجوا أن تقوم بدعمنا عبر نشرك والاعجاب بالموقع