TheBrain نشر 2 مارس 2016 أرسل تقرير نشر 2 مارس 2016 أريد التأكد من بعض الكائنات الموجودة في سكربت بايثون ما إذا كانت تتصرف كملف حقيقي أي أنها على سبيل المثال تمتلك دوال للقراءة read() وللكتابة write()، فهل هذا الأمر ممكن؟ جربت استخدامif not hasattr(fp, 'read') فهل هذه الطريقة جيدة؟ 1 اقتباس
1 هشام رزق الله نشر 2 مارس 2016 أرسل تقرير نشر 2 مارس 2016 سمعت عن الكثير من المحترفين أن عملية التأكد من نوع كائن ملف غير جيدة ولا يُنصح بها في شيفرتك البرمجية إلا في الضرورة. فالكتابة في بايثون حيوية - dynamic -، فالطريقة التي ذكرتها وهي التأكد ما إذا كان المتغير هو كائن ملف أفضل من استخدام طريقة تجربة التعامل مع المتغير كملف والتعامل مع رسالة الخطأ كما يفعل البعض. اقتباس
0 samer_jabal نشر 4 مارس 2016 أرسل تقرير نشر 4 مارس 2016 هذه العملية معقدة رغم ما يبدوا عليها من بساطة. فمثلًا ليس كائن الملف الذي تنشئه بإستخدام الدالة المدمجة ()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 في مثالي. اقتباس
السؤال
TheBrain
أريد التأكد من بعض الكائنات الموجودة في سكربت بايثون ما إذا كانت تتصرف كملف حقيقي أي أنها على سبيل المثال تمتلك دوال للقراءة read() وللكتابة write()، فهل هذا الأمر ممكن؟
جربت استخدامif not hasattr(fp, 'read') فهل هذه الطريقة جيدة؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.