في هذه المقالة، سنتناول خطأ شائعًا جدًا في بايثون و هو – filenotfounderror -. إذا كنت قد عملت مع بايثون من قبل، فمن المؤكد أنك واجهت هذا الموقف أيضًا، حيث تكتب كل التعليمات البرمجية الخاصة بك، وتحافظ على المسافات البادئة المناسبة فيها، وتضع سطر تعليقات، وتتحقق مرة أخرى من الأخطاء المطبعية، وبعد التأكد من أن كل شيء صحيح وفي مكانه، تقوم بتشغيل التعليمات البرمجية وتنتهي بالحصول على “filenotfounderror” في سطر المترجم.
أليس هذا محبطًا؟ لا تقلق، سنحرص على تغطية كافة الطرق الممكنة لحل هذه المشكلة حتى لا تواجهها مرة أخرى.
ما هو خطأ filenotfounderror
إنها رسالة نظام يطرحها المترجم عندما تحاول تنفيذ أمر يتطلب ملفًا لا يستطيع النظام العثور عليه. يمكن أن يكون ذلك لأسباب مختلفة مثل – تحديد مسار ملف خاطئ، أو وجود الملف في دليل آخر، أو خطأ في الامتداد. سنتناول النقاط في هذه المقالة. لكن دعنا أولاً نعيد إنشاء المشكلة في نظامنا.
سوف نكتب برنامجًا لتحميل ملف csv. إلى إطار بيانات pandas ثم طباعة إطار البيانات هذا.
import pandas as pd
df=pd.read_csv("nifty 2020 crash")
print(df)
كيفية إصلاح خطأ filenotfounderror في Python؟
عندما تقوم بتشغيل كود بايثون في الطرفية، فإنه يبحث عن الملف في الدليل الجذر الذي يعمل منه الجهاز الطرفي. هناك اعتقاد خاطئ شائع بين الناس وهو أنه عندما تقوم بتشغيل كود بايثون لقراءة ملف، فإن الجهاز الطرفي يبحث عن هذا الملف في الكمبيوتر بالكامل، وهو اعتقاد غير صحيح.
يجب أن تكون جميع الملفات التي يحتاجها برنامجك موجودة في الدليل الجذر الذي تم تنشيط الطرفية منه.
يمكن حل هذه المشكلة بطريقتين:
الطريقة 1: تحديد مسار الملف الكامل
عندما نقوم بتشغيل برنامجنا، نذكر اسم الملف في البرنامج. يبحث المترجم عنه في الدليل الجذر ويلقي أخطاء. الحل لهذه المشكلة هو تحديد مسار الملف بالكامل في الكود.
import pandas as pd
df = pd.read_csv(r"C:\Users\Win 10\Desktop\python_errorsolving\nifty 2020 crash.csv")
print(df)
ملاحظة: لاحظ أنه عند تحديد مسار الملف، أضفنا حرف r قبل كتابة المسار، pd.read_csv(r”C:.……). ويُستخدم هذا لتحويل السلاسل البسيطة إلى سلاسل خام. وإذا لم نضيف حرف r قبل تحديد مسار الملف، فسيعامل النظام هذا السطر من التعليمات البرمجية كمدخل سلسلة عادي بدلاً من مسار ملف.
الطريقة 2: استخدام ملف txt لتشغيل البرنامج النصي Python
في هذه الطريقة، نستخدم نهجًا بسيطًا للغاية ولكنه فعال لهذه المشكلة. نكتب الكود الخاص بنا في ملف txt ونخزنه في الدليل الذي يوجد به الملف المطلوب. عندما نقوم بتشغيل ملف txt هذا باستخدام بايثون، يبحث المترجم عن هذا الملف في هذا الدليل فقط. لا تتطلب هذه الطريقة منا تحديد مسار الملف بالكامل ولكننا نحتاج إلى التأكد من تشغيل المحطة الطرفية من الدليل الصحيح.
لتوضيح هذا المثال، قمنا بإنشاء دليل على سطح المكتب باسم “python_errorsolving”. يحتوي هذا الدليل على ملفين، ملف txt يحتوي على أكواد بايثون وملف csv الذي نحتاجه لكودنا.
لتشغيل هذا الملف من الطرفية، انتقل إلى الدليل يدويًا باستخدام cd، ثم قم بتشغيل هذا الملف باستخدام صيغة python error_crt.txt أو أيًا كان اسم ملفك.
كما ترى، لا تتطلب هذه الطريقة تحديد مسار الملف بالكامل. وهي مفيدة عندما يتعين عليك العمل مع ملفات متعددة لأن تحديد المسار بالكامل لكل ملف محدد قد يكون مهمة شاقة.
الطريقة 3: حل بديل لمشكلة filenotfounderror
هذا ليس حلاً بل هو حل بديل لهذه المشكلة. لنفترض أنك في موقف معين حيث يكون مسار الملف هو نفسه ولكن عليك تحميل ملفات مختلفة متتالية. في هذه الحالة، يمكنك تخزين اسم الملف ومسار الملف في متغيرين مختلفين ثم ربطهما في متغير ثالث. بهذه الطريقة يمكنك إنشاء مجموعات من ملفات مختلفة متعددة، ثم تحميلها بسهولة.
ولتوضيح هذا الحل، سنقوم بإنشاء ملف txt، يحتوي على الكود التالي:
import pandas as pd
filename = "nifty 2020 crash.csv"
filepath = "C:\\Users\\Win 10\\Desktop\\python_errorsolving\\"
file = filepath+filename
df = pd.read_csv(file)
print(df)
استخدام IDE لإصلاح خطأ عدم العثور على الملف
تُعد بيئات التطوير المتكاملة أو IDE طريقة رائعة لإدارة ملفاتنا ومتغيرات البيئة. يساعد هذا في إنشاء بيئات افتراضية لأكوادك بحيث لا تتفاعل المكتبات ومتغيرات البيئة المطلوبة مع مشاريعنا الأخرى. في هذا القسم، سننشئ مشروعًا في PyCharm IDE، ونرى مدى سهولة تخزين ملفاتنا والتفاعل معها.
لتوضيح هذا المثال، قمنا بإنشاء ملف csv يحتوي على سجلات مدرسية، ويُسمى “book1.csv”. لاستيراده في PyCharm، اتبع الخطوات التالية:
الخطوة 1: انتقل إلى ملف> مشروع جديد…> أعط اسمًا للملف> إنشاء.
الخطوة 2: انسخ ملف .csv والصقه في هذا المشروع.
بمجرد لصق الملف، يمكنك الوصول مباشرة إلى هذا الملف باستخدام أكوادك، دون الحاجة إلى تحديد المسار بالكامل. يمكنك ببساطة العمل باستخدام اسم الملف.
import pandas as pd
df = pd.read_csv('Book1.csv', sep='|')
print(df)
النتيجة:
في هذه المقالة، لاحظنا الحالات المختلفة التي لا يتمكن فيها النظام من تحديد موقع ملفاتك. كما نظرنا في الحلول المختلفة الممكنة لهذه المشكلات، من تحديد المسارات يدويًا إلى استخدام بيئات التطوير المتكاملة للحصول على نتيجة أفضل. آمل أن تكون هذه المقالة قد حلت مشكلتك
اكتشاف المزيد من بايثون العربي
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.