اذهب إلى المحتوى
  • 1

كيف أتأكد ما إذا كان الكائن هو ملف في بايثون؟

TheBrain

السؤال

أريد التأكد من بعض الكائنات الموجودة في سكربت بايثون ما إذا كانت تتصرف كملف حقيقي أي أنها على سبيل المثال تمتلك دوال للقراءة read() وللكتابة write()، فهل هذا الأمر ممكن؟

جربت استخدامif not hasattr(fp, 'read') فهل هذه الطريقة جيدة؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

سمعت عن الكثير من المحترفين أن عملية التأكد من نوع كائن ملف غير جيدة ولا يُنصح بها في شيفرتك البرمجية إلا في الضرورة.
فالكتابة في بايثون حيوية - dynamic -، فالطريقة التي ذكرتها وهي التأكد ما إذا كان المتغير هو كائن ملف أفضل من استخدام طريقة تجربة التعامل مع المتغير كملف والتعامل مع رسالة الخطأ كما يفعل البعض.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

هذه العملية معقدة رغم ما يبدوا عليها من بساطة.

فمثلًا ليس كائن الملف الذي تنشئه بإستخدام الدالة المدمجة ()open الوحيد الذي يملك وسائل مثل ()read وغيرها.

لتوضيح مقصدي أكثر تفقد التالي:

from StringIO import StringIO

#إنشاء كائن شبيه-بالملف file-like

fl=StringIO()

#الكتابة على الكائن

fl.write("Hello, I'm Samer and this is a Test.\n")

#العودة لبداية الملف

fl.seek(0)

 

#قراءة الملف

print fl.read()

#إغلاق الملف

fl.close()

* الجدير بالذكر أنني إستخدمت بايثون 2.7.x في مثالي.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...