Відповідь Мартієна має сенс, але в ньому бракувало чогось вирішального, що може здатися очевидним для інших, але мені було важко це зрозуміти.
У версії, де ви використовуєте argparse, вам потрібно мати цей рядок в основному тексті.
args = parser.parse_args(args)
Зазвичай, коли ви використовуєте argparse просто в сценарії, ви просто пишете
args = parser.parse_args()
і parse_args знаходять аргументи з командного рядка. Але в цьому випадку основна функція не має доступу до аргументів командного рядка, тому вам слід сказати argparse, якими є аргументи.
Ось приклад
import argparse
import sys
def x(x_center, y_center):
print "X center:", x_center
print "Y center:", y_center
def main(args):
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument("-x", "--xcenter", type=float, default= 2, required=False)
parser.add_argument("-y", "--ycenter", type=float, default= 4, required=False)
args = parser.parse_args(args)
x(args.xcenter, args.ycenter)
if __name__ == '__main__':
main(sys.argv[1:])
Якщо припустити, що ви вказали цю назву mytest.py, щоб запустити її, ви можете зробити будь-яку з них із командного рядка
python ./mytest.py -x 8
python ./mytest.py -x 8 -y 2
python ./mytest.py
який повертається відповідно
X center: 8.0
Y center: 4
або
X center: 8.0
Y center: 2.0
або
X center: 2
Y center: 4
Або якщо ви хочете запустити з іншого сценарію python, ви можете це зробити
import mytest
mytest.main(["-x","7","-y","6"])
який повертається
X center: 7.0
Y center: 6.0
myModule.main()
. Що ви пробували дотепер?