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

Adam Ebrahim

الأعضاء
  • المساهمات

    165
  • تاريخ الانضمام

  • تاريخ آخر زيارة

أجوبة بواسطة Adam Ebrahim

  1. عندما أحاول اختبار أي تطبيق جانغو Django باستخدام الأمر fabric، والذي يستخدم هذا الأمر:

    python manage.py test myapp

    يظهر لي هذا الخطأ:

    Creating test database for alias 'default'...
    Got an error creating the test database: permission denied to create database
    
    Type 'yes' if you would like to try deleting the test database 'test_mydb', or 'no' to cancel

    يبدو أن الأمر syncdb يعمل. لكن بالرغم من ذلك لا يعمل الأمر السابق،

    هنا إعدادات قاعدة البيانات الخاصة بي في ملف settings.py:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2', 'oracle'.
            'NAME': 'mydb',
            'USER': 'myusername',
            'PASSWORD': 'mypassword',
            'HOST': '127.0.0.1',
            'PORT': '',
        }
    }

    ما سبب هذه المشكلة وكيف أقوم بحلها؟

    • أعجبني 2
  2. أقوم بتطوير برنامج في Python سيتم بيعه إلى بعض العملاء. وأريد أن أقوم بجعل البرنامج مغلق المصدر ولا يمكن لأحد الوصول إلى الكود المصدري للبرنامج، أعلم أنه يمكن تشغيل برامج بايثون بصيغة pyc لكن أعتقد أنه من السهل تحويل كود pyc إلى كود بايثون عادي.

    هل هناك طريقة جيدة للتعامل مع هذه المشكلة؟

  3. أريد أن أقوم بتعديل قيمة خاصية في صنف class من خلال نص باسم الخاصية، كالتالي:

    class Foo:
       def __init__(self):
           self.attr1 = True
           self.attr2 = False
    
    foo = Foo()
    x = "attr1"
    y = 123

    كيف أقوم بتعديل الخاصية المخزنة في المتغير x بقيمة المتغير y؟

    • أعجبني 2
  4. أحاول التطبيق على OOP ولكن عند إستخدام المعامل += يحدث أمر غير متوقع، في الكود التالي يوجد صنفين foo و foo2 وعند عمل كائن من كل صنف وإضافة قيمة إلى القائمة bar يتم إضافتها أيضًا إلى الكائن الآخر!!

    >>> class foo:
    ...     bar = []
    ...     def __init__(self,x):
    ...             self.bar += [x]
    ...
    >>> class foo2:
    ...     bar = []
    ...     def __init__(self,x):
    ...             self.bar = self.bar + [x]
    ...
    >>> f = foo(1)
    >>> g = foo(2)
    >>> f.bar
    [1, 2]
    >>> g.bar
    [1, 2]
    >>> f.bar += [3]
    >>> f.bar
    [1, 2, 3]
    >>> g.bar
    [1, 2, 3]

    لماذا أصبح الكائن g يحتوي على نفس القائمة أيضًا؟

    هذه المشكلة لا تحدث إن قمت بإستخدام الطريقة العادية كالتالي:

    >>> f.bar = f.bar + [4]
    >>> f.bar
    [1, 2, 3, 4]
    >>> g.bar
    [1, 2, 3]
    >>>

    ما الفرق بين الطريقة الأولى والثانية؟

    • أعجبني 2
  5. لدي ملف log تتم كتابته بواسطة عملية أخرى وأريد أن أتابع التغييرات. في كل مرة يحدث تغيير، أود قراءة البيانات الجديدة لإجراء بعض المعالجة عليها. بدلًا من قراءة الملف كاملًا، حيث أن حجم الملف يزداد مع الوقت وتستغرق عملية قراءة الملف وقت أطول كل مرة.

    كيف أقوم بمعرفة التغيرات التي تحدث على الملف فقط (يتم إضافة أسطر جديدة إلى الملف كل بضع ثواني)؟

    • أعجبني 1
  6. هل يمكن أن أستخدم التابع replace لإزالة أو ‘ستبدال أجزاء متعددة من النص، أعلم أنه يمكنني أن أستخدم replace أكثر من مرة كالتالي:

    x = "hello, world"
    x = x.replace("hello", "hi")
    x = x.replace("world", "adam")
    print(x)	# hi, adam

    هل توجد طريقة مختصرة أكثر بدلًا من تكرار replace العديد من المرات؟

    • أعجبني 1
  7. من فترة تعلمت كيف أقوم بعمل staticmethod في صنف بايثون، والآن وجد كود يحتوي على @classmethod  قبل تعريف دالة في الصنف بنفس طريقة إستعمال staticmethod@  ولم أفهم ما الذي يفعله هذا الأمر.

    لذلك أريد أن أعرف ما الفرق بين staticmethod و classmethod في أصناف بايثون؟

  8. لدي نص كالتالي:

    x= """Bound methods have been "bound" (how descriptive) to an instance, what about that?!"""
    

    كيف أقوم باستخراج الكلمات فقط بدون باقي علامات التنصيص والاستفهام وغيرها من رومز؟

    حاولت أن استخدم التابع replace لحذف هذه العلامات، لكن أخشى أن يقوم المستخدم بإدخال رموز مختلفة أو رموز Emoji، وبالتالي سيكون من المستحيل إزالة كل الرموز الغريبة من النص قبل تقسيمه لكلمات باستخدام التابع split. هل توجد طريقة سريعة لإستخراج الكلمات فقط من النص؟

  9. في الوقت الحالي أنا أتعلم كيفية استخدام الـ threading  و multiprocessing  في بايثون لتشغيل عمليات معينة بالتوازي وتسريع الكود الخاص بي.

    لكن لدي مشكلة في معرفة الفرق بين هذه المكتبات، ما الفرق بين الكائنين التاليين؟

    threading.Thread() 
    
    multiprocessing.Process()

    متى أستعمل كلًا من مكتبة threading  أو multiprocessing؟

    • أعجبني 1
  10. لدي ملف يحتوي على جمل وفي هذه الجمل يوجد أرقام كثيرة، كيف يمكنني إستخراج الأرقام من هذه النصوص؟

    على سبيل المثال لدي المتغير التالي:

    x = "Hello, World! 0 Started 99, I'm 20 years"

    كيف أحصل على النتيجة التالية:

    [0, 99, 20]

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

  11. أريد أن أقوم باستدعاء ملف بايثون والذي يقوم بطباعة جملة معينة عند استدعائه، لكن المشكلة أنه بمجرد استدعائه مرة واحد لا يتم تنفيذ الكود في المرات التالية:

    for i in range(5):
      import myScript # يتم تنفيذه مرة واحدة فقط
      print('imported')

     

  12. أستخدم Linux والذي يأتي بإصدار 2.7 من بايثون ، ثم قمت بتثبيت بايثون 3.8 أيضًا، والآن لدي أكثر من إصدار بايثون مثبتة على حسوبي (بايثون 2.7 و 3.8)، كيف أقوم بتحديد أحد هذه الإصدارات عند إنشاء بيئة عمل إفتراضية من خلال virtualenv؟

  13. أريد أن أقوم باستدعاء دالة ما وبدء عداد counter وإذا وصل العداد إلى 10 ثوان ولم تنتهي الدالة بعد يتم إيقاف الدالة على الفور (حتى وإن لم تقم بعمل return )

    أي كيف أقوم بعمل TimeOut لدالة ما في بايثون؟

    • أعجبني 1
  14.  

    كيف يمكنني إخراج نص ملون إلى terminal في بايثون؟

    رأيت في أحد السكريبتات أنه يتم ظهور الإختيارات والنتيجة .. إلخ في الـ terminal بألوان مختلفة، كيف يمكنني عمل ذلك أيضًا؟ وهل هذه الطريقة تعمل في جميع أنظمة التشغيل (Winodws و Linux و MacOS)؟

    • أعجبني 1
  15. أحيانًا عندما أقوم بتحميل سكريبت من أحد المواقع مثل GitHub وأقوم بتشغيل السكريبت أجد خطأ IndentationError كالتالي:

    File "script.py", line 4
        print('foo')
    
    IndentationError: unindent does not match any outer indentation level

    بالرغم من بساطة الكود للغاية إلا أن هذا الخطأ يظهر لي في كثير من الأحيان، أعرف أن سبب هذا الخطأ في الغالب هو عدم تناسق عدد المسافات في (أستعمل 4 spaces في الغالب)، لكن لا أستطيع إصلاح المشكلة في الغالب.

    وتظهر لي أخطاء أخرى لكن أعتقد أن لها علاقة بـ indentation أيضًا

    IndentationError: unexpected indent
    IndentationError: expected an indented block

    هل توجد طريقة سهلة لترتيب هذه المسافات في ملف بايثون، أستخدم VS Code

  16. أريد أن أقوم بتخزين وإحضار بعض البيانات من قاعدة بيانات SQLite وأقوم بإستعمال formatted string لوضع المتغيرات في جملة SQL لكن أعتقد أن هذه الطريقة غير صحيحة وقد تسبب مشكلة إن قام المستخدم بإدخال علامات تنصيص ' " على سبيل المثال، لذلك كيف أقوم بإستخدام المتغيرات في جمل SQL بطريقة صحيحة

    هذا هو الكود الخاص بي:

    setting = input("Change settings")
    cr.execute(f"SELECT * FROM settings WHERE id = {setting}")

     

×
×
  • أضف...