الطرفية والمجلدات ومشروعك الأول
تنقّل بين مجلداتك من الطرفية، وأنشئ مجلد مشروع، وشغّل الملفات، وتعرّف متى تكون الصدفة التفاعلية لبايثون (REPL) الأداة المناسبة.
كيف تريد أن تتعلم؟
المشكلة التي نقوم بحلها
في الفصل السابق ثبّتَّ بايثون وشغّلت ملفاً. لكن شيئاً حدث بهدوء في أثناء ذلك — عندما شغّلت الملف، كانت الطرفية (terminal) مفتوحة أصلاً في ذلك المجلد بالضبط. VS Code فعل ذلك نيابةً عنك.
لن يكون الأمر هكذا دائماً. عندما تكون الطرفية في مجلد آخر، عليك أن تنتقل بنفسك إلى مجلد الملف. هذا "الانتقال" هو أكثر ما يوقع المبتدئين. الكود سليم، وبايثون سليم، لكن الطرفية موجودة في مجلد آخر — فيقول بايثون إن الملف غير موجود.
في العمل ستفعل هذا مئات المرات في اليوم. لذلك سنحوّل اليوم الطرفية من شاشة سوداء غير مألوفة إلى أداة تعرفها.
في نهاية هذا الفصل ستستطيع
- معرفة المجلد الذي توجد فيه الطرفية الآن
- الانتقال من مجلد إلى آخر، والرجوع مستوى واحداً إلى الأعلى
- إنشاء مجلد مشروع وتشغيل ملف بداخله
- فتح الصدفة التفاعلية لبايثون (REPL) وإغلاقها
- شرح الفرق بين REPL وملف
.py— فهذا الالتباس وحده يضيّع وقتاً كثيراً
المتطلبات المسبقة: تثبيت بايثون وتشغيل برنامجك الأول.
ما هي الطرفية فعلاً
الطرفية مكان تعطي فيه الحاسوب أوامر بالكتابة بدلاً من النقر بالفأرة. وكل نافذة طرفية "تقف" دائماً داخل مجلد ما. هذا المجلد يسمى المجلد الحالي (current directory).
هذه هي الفكرة كلها. عندما تكتب python hello.py فأنت تقول في الحقيقة: "شغّل الملف `hello.py` الموجود في المجلد الذي أقف فيه الآن." إذا كان الملف في مجلد آخر فلن يجده بايثون — لأنه لا يبحث في أي مكان آخر.
أوامر هذا الفصل متشابهة تقريباً في PowerShell على ويندوز، وTerminal على macOS، وTerminal على لينكس. وحيث تختلف، تُعرض الصيغتان.
عند فتح PowerShell على ويندوز سترى عادةً شيئاً مثل:
PS C:\Users\Rafi>وعلى macOS شيئاً مثل:
rafi@MacBook ~ %وعلى لينكس شيئاً مثل:
rafi@laptop:~$هذا السطر يسمى المحثّ (prompt) — الطرفية تنتظر أمرك. على ويندوز يخبرك الجزء C:\Users\Rafi أين أنت. وعلى macOS ولينكس تعني العلامة ~ مجلدك الرئيسي (home folder).
أربعة أوامر تكفي للعمل
pwd — أين أنا؟
pwdفي PowerShell على ويندوز يظهر الجواب هكذا:
Path
----
C:\Users\Rafiعلى macOS أو لينكس يظهر المسار فقط:
/home/rafi(على macOS يكون المسار /Users/rafi.)
ls — ماذا يوجد هنا؟
lsيعرض قائمة بالمجلدات والملفات. ls يعمل على الأنظمة الثلاثة؛ وفي ويندوز يوجد أيضاً أمر أقدم للمهمة نفسها هو dir. تشغيل ls قبل تشغيل ملف عادة جيدة — فهو يؤكد أن الملف الذي ستشغّله موجود فعلاً.
cd — انتقل إلى مجلد آخر
cd python-labنقطتان ترجعان بك مستوى واحداً إلى الأعلى:
cd ..وللعودة مباشرة إلى مجلدك الرئيسي من أي مكان:
cd ~هذه الأوامر الثلاثة تعمل بالطريقة نفسها على ويندوز وmacOS ولينكس.
اكتب أقل. اكتب أول حرفين أو ثلاثة من اسم مجلد أو ملف واضغط Tab — فتكمل الطرفية الباقي. كتابة الأسماء يدوياً هي أكبر مصدر للأخطاء الإملائية، وTab يزيله.
mkdir — أنشئ مجلداً جديداً
mkdir lesson-02جهّز مجلد مشروع
إذا بعثرت ملفاتك على سطح المكتب أثناء التعلم، فلن تجد شيئاً بعد أسبوع. لذلك اختر مكاناً واحداً، وأعطِ كل فصل مجلده الخاص. في الفصل السابق أنشأت python-lab في مجلدك الرئيسي؛ والآن أنشئ مجلد هذا الفصل داخله:
cd ~
cd python-lab
mkdir lesson-02
cd lesson-02
pwdإذا لم يكن python-lab موجوداً بعد، فنفّذ mkdir python-lab بعد cd ~. هذه الأوامر متطابقة على الأنظمة الثلاثة.
على ويندوز يجب أن يكون جواب الأمر الأخير:
Path
----
C:\Users\Rafi\python-lab\lesson-02وعلى لينكس:
/home/rafi/python-lab/lesson-02على macOS يبدأ المسار بـ /Users/rafi. ويظهر اسم المستخدم الخاص بك مكان Rafi أو rafi.
الآن أنشئ في هذا المجلد ملفاً باسم notes.py يحتوي على:
print("Folder:", "lesson-02")
print("Squares:", 2 * 2, 3 * 3, 4 * 4)ثم شغّله — على ويندوز:
python notes.pyعلى macOS أو لينكس:
python3 notes.pyFolder: lesson-02
Squares: 4 9 16الصدفة التفاعلية لبايثون
اكتب python وحده في الطرفية (python3 على macOS ولينكس) واضغط Enter، فيفتح بايثون نفسه:
python3Python 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>السطر الأول سيكون مختلفاً على حاسوبك — فهو يعرض إصدار بايثون لديك، وتاريخاً، واسم نظام التشغيل (على ويندوز ينتهي بـ on win32، وعلى macOS بـ on darwin). أما العلامة >>> فهي نفسها في كل مكان، ومعناها أن بايثون ينتظر سطراً منك. كل ما تكتبه هنا يأتيك جوابه فوراً:
>>> 2 + 3
5
>>> "Python"
'Python'
>>> len("terminal")
8هذا يسمى REPL — أي Read, Eval, Print, Loop: اقرأ، نفّذ، اطبع، كرّر. وهو مفيد جداً للتحقق من شيء صغير: هل عملية حسابية صحيحة، أو ماذا تُرجع دالة (function) ما.
للخروج:
>>> exit()الفرق الذي يضيّع على الناس ساعات: في REPL، كتابة2 + 3تعرض لك5من تلقاء نفسها. لكن ضع2 + 3وحدها في ملف.pyوشغّله، فلن يظهر شيء — بايثون يجري الحساب، ويرمي النتيجة، ويبقى صامتاً. في الملف يجب أن تكتب
عندما يحدث خطأ
python : The term 'python' is not recognized... (ويندوز) أو command not found: python (macOS، لينكس) على ويندوز، بايثون ليس في PATH — راجع قسم "عندما يحدث خطأ" في الفصل السابق: أعد تشغيل برنامج التثبيت وضع العلامة على المربع من خلال Modify. وعلى macOS ولينكس اسم الأمر هو python3.
can't open file '...notes.py': [Errno 2] No such file or directory الطرفية في المجلد الخطأ، أو في اسم الملف خطأ إملائي. نفّذ pwd لترى أين أنت، ثم ls لترى هل الملف موجود.
cd : Cannot find path ... because it does not exist (ويندوز) أو cd: no such file or directory (macOS، لينكس) المجلد لم يُنشأ بعد، أو الاسم خطأ. أنشئه بـ mkdir، واضغط Tab في المرة القادمة التي تكتب فيها الاسم.
الطرفية تبدو عالقة، ولا تعرض إلا >>> أنت داخل REPL، لا خارجه. ls وpython notes.py لن يعملا هنا — فهذه أوامر للطرفية، وليست كود بايثون. اكتب exit() للخروج.
اسم المجلد فيه مسافات ضع الاسم كله بين علامتي اقتباس: cd "my python lab". هذا يعمل على الأنظمة الثلاثة. تسمية المجلدات بلا مسافات تمنع المشكلة من الأساس، ولهذا فإن python-lab وmy_notes عادة أفضل.
الخطوة ٤ من ٦ — التوقع
تحقّق من فهمك
هذا الملف المكوّن من سطرين يُشغَّل بالأمر python notes.py. ماذا يظهر في الطرفية؟
2 + 3
print("done")- Adone
- Bلا شيء — الملف سيعطي خطأ
- C5
- D5 done
الملف notes.py موجود داخل المجلد lesson-02، لكن الطرفية تقف مستوى واحداً فوقه، في python-lab. ماذا يحدث عند تشغيل python notes.py؟
- Aيعطي بايثون خطأ بأنه لا يستطيع فتح الملف — فهو يبحث في المجلد الحالي فقط
- Bيبحث بايثون في المجلدات الفرعية أيضاً ويشغّل الملف
- Cيعمل الملف، لكن المخرجات لا تظهر
- Dيسألك بايثون أين يوجد الملف
الطرفية لديك تعرض >>>، وتريد أن ترى قائمة الملفات في المجلد. ماذا تفعل؟
- Aتكتب `print(ls)`
- Bتغلق نافذة الطرفية وتفتح واحدة جديدة؛ فهذه هي الطريقة الوحيدة
- Cتكتب `exit()` لتخرج من REPL، ثم تنفّذ `ls`
- Dتكتب `ls` مباشرة — أوامر الطرفية تعمل داخل REPL
الإجابة تتطلب حساباً
سجّل الدخول للتحقق من إجاباتك
الأسئلة موجودة أعلاه، والتفكير في إجاباتها ذهنياً هو الجزء المهم. سجّل الدخول لرؤية الإجابات والتفسيرات والتلميحات ذات المستويات الثلاثة.
دورك الآن
من الطرفية، وبالأوامر فقط:
- أنشئ مجلداً باسم
practiceداخلpython-lab - ادخل إليه وتأكد بـ
pwd - أنشئ هناك ملفاً باسم
about.pyيطبع اسمك وتاريخ اليوم - شغّله بـ
python about.py(python3 about.pyعلى macOS أو لينكس) - الآن نفّذ
cd ..لترجع مستوى واحداً، ثم شغّل الأمر نفسه مرة أخرى — ماذا حدث؟
الخطوة الأخيرة هي الدرس الحقيقي. بعد أن ترى الخطأ عمداً مرة واحدة، ستعرف سببه في ثانية عندما يظهر في عمل حقيقي.
في هذه المهمة المزيد
ما قرأته أعلاه هو المهمة كاملة — لم يُحذف منها شيء. يضيف Pro:
- ما يحدث فعلياً في الكواليس — كيف ينفذ بايثون هذا الكود
- الحل الكامل للتمرين مشروحاً خطوة بخطوة
- تمارين إضافية أكثر صعوبة وتحدياً
- أسئلة المقابلات الوظيفية حول هذا الموضوع مع نموذج الإجابة
الخطوة ٦ من ٦
التحدي — اختبار الفصل
عشرة أسئلة متدرجة من السهل إلى الصعب. الأسئلة الأخيرة صعبة عن قصد.
سجّل الدخول لأداء الاختبار