بايثون، الذي يتصل بوحدة بايثون الخاصة بي

StackOverflow https://stackoverflow.com/questions/819217

  •  03-07-2019
  •  | 
  •  

سؤال

لدي وحدة Python واحدة يمكن استدعاؤها بواسطة برنامج نصي CGI (تمرير المعلومات من نموذج) أو من سطر الأوامر (تمرير الخيارات والوسائط من سطر الأوامر).هل هناك طريقة لمعرفة ما إذا كان قد تم استدعاء الوحدة من البرنامج النصي CGI أو من سطر الأوامر؟؟

هل كانت مفيدة؟

المحلول

وهذا سوف نفعل ذلك:

import os
if os.environ.has_key('REQUEST_METHOD'):
    # You're being run as a CGI script.
else:
    # You're being run from the command line.

نصائح أخرى

هذه فكرة تصميم سيئة حقًا.يجب أن يتم تصميم البرنامج النصي الخاص بك للعمل بشكل مستقل عن كيفية استدعائه.يجب أن توفر برامج الاتصال بيئة موحدة.

ستكون أسعد إذا قمت بتصميم البرامج النصية الخاصة بك للعمل بطريقة واحدة متسقة تمامًا.بناء أشياء مثل هذا.

  • myscript.py - "العمل الحقيقي" - محدد في الوظائف والفئات.

  • myscript_cgi.py - واجهة CGI تستورد myscript وتستخدم الفئات والوظائف.

  • myscript_cli.py - واجهة سطر الأوامر التي تقوم بتحليل خيارات سطر الأوامر، واستيراد myscript، واستخدام الفئات والوظائف.

عادةً ما يكون النص البرمجي الوحيد الذي يقوم بالأشياء الثلاثة (العمل الحقيقي، واجهة cgi، واجهة cli) خطأً.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top