it-swarm.dev

كيف يمكنني تشغيل Python النصي باستخدام الوسائط في سطر أوامر windows

هذا هو بلدي python hello.py النصي:

def hello(a,b):
    print "hello and that's your sum:"
    sum=a+b
    print sum
    import sys

if __== "__main__":
    hello(sys.argv[2])

المشكلة هي أنه لا يمكن تشغيله من سطر الأوامر windows موجه ، لقد استخدمت هذا الأمر:

C:\Python27>hello 1 1

لكن هذا لم ينجح لسوء الحظ ، هل يمكن لشخص ما المساعدة؟

40
user2563817
  • import sys خارج وظيفة الترحيب.
  • يجب تحويل الوسائط إلى int.
  • يجب الهروب من السلسلة الحرفية التي تحتوي على ' أو يجب الاستغناء عنها بواسطة ".
  • هل استدعت البرنامج مع python hello.py <some-number> <some-number> في سطر الأوامر؟

import sys

def hello(a,b):
    print "hello and that's your sum:", a + b

if __== "__main__":
    a = int(sys.argv[1])
    b = int(sys.argv[2])
    hello(a, b)
39
falsetru

لتنفيذ البرنامج من سطر الأوامر ، يجب عليك الاتصال بـ python مترجم ، مثل هذا:

C:\Python27>python hello.py 1 1

إذا كان رمزك موجودًا في دليل آخر ، فسيتعين عليك تعيين python المسار الثنائي في متغير بيئة PATH ، لتتمكن من تشغيله أيضًا. يمكنك العثور على إرشادات مفصلة هنا .

12
thibauts

فيما يلي جميع الإجابات السابقة ملخصة:

  • يجب استيراد الوحدات النمطية خارج الوظائف.
  • hello (sys.argv [2]) يحتاج إلى وضع مسافة بادئة لأنه داخل عبارة if.
  • مرحبًا يحتوي على وسيطين ، لذلك تحتاج إلى استدعاء 2 وسائط.
  • بقدر ما استدعاء الدالة من المحطة الطرفية ، تحتاج إلى الاتصال python .py ...

يجب أن يبدو الرمز كالتالي:

import sys
def hello(a, b):
    print "hello and that's your sum:"
    sum = a+b
    print sum

if __name__== "__main__":
    hello(int(sys.argv[1]), int(sys.argv[2]))

ثم قم بتشغيل الكود باستخدام هذا الأمر:

python hello.py 1 1
7
C. Glass

المسافة البادئة الخاصة بك مكسورة. هذا يجب إصلاحه:

import sys

def hello(a,b):
    print 'hello and thats your sum:'
    sum=a+b
    print sum

if __== "__main__":
    hello(sys.argv[1], sys.argv[2])

من الواضح ، إذا وضعت if __name__ statement من الداخل الوظيفة ، لن يتم تقييمها إلا إذا قمت بتشغيل هذه الوظيفة. المشكلة هي: الهدف من العبارة المذكورة هو تشغيل الوظيفة في المقام الأول.

4
Nils Werner
import sys

def hello(a, b):
    print  'hello and that\'s your sum: {0}'.format(a + b)

if __== '__main__':
    hello(int(sys.argv[1]), int(sys.argv[2]))

علاوة على ذلك ، راجع @ thibauts الإجابة عن كيفية الاتصال python script.

1
ElmoVanKielmo