2016-02-27 2 views
0

Я не знаю, является ли это просто ошибкой новичка, но Python не распознает все мои аргументы. Я использую bash, так что, возможно, это проблема. У меня есть рабочий аргумент, называемый -vs, и я пытаюсь заставить его определить необходимое целое число после него, поэтому соответствующий синтаксис равен program.py -vs 5 или целому числу. Однако он не распознает «5». Это происходит, когда я помещаю тире (-) рядом с ним и начинаю с буквы. Как я могу получить Python, чтобы это увидеть?Python не распознает все аргументы командной строки

Вот фрагмент кода:

elif arg == "-vs" or "--vertical-spacing": 
     if int(sys.argv[argnum + 1]) >= 0: 
      vspacing = int(sys.argv[argnum + 1]) 
     else: 
      print "Invalid Spacing: Less than zero (Ya can't have negative spacing, silly!)" 

      sys.exit() 

К слову, argnum переменная увеличивается на единицу каждый раз, как я проходным эти аргументы. (Я использую for arg in sys.argv[1:]. Не волнуйтесь, я начинаю argnum как 0 и увеличиваю его, это первое, что я делаю при циклировании, поэтому он не видит путь программы и/или имя, или sys.argv[0].

+1

Можете ли вы опубликовать часть кода питона, которое анализирует аргументы командной строки –

+0

Конечно, позвольте мне изменить мой пост – jadenPete

+0

Готово, обновите страницу, я добавил свой код и лучшее объяснение. – jadenPete

ответ

1

пример с argparse вместо:.

if __name__ == '__main__': 
    import argparse 
    parser = argparse.ArgumentParser() 
    parser.add_argument("-vs", "--vertical-spacing", type=int, dest="vertical_spacing", help="vertical spacing. must be > 0") 

    args = parser.parse_args() 
    if not args.vertical_spacing: 
     print "Invalid Spacing: Less than zero (Ya can't have negative spacing, silly!)" 
     sys.exit() 

    some_function(args.vertical_spacing) 
+1

Спасибо, например, это упростит реализацию этого, вместо того, чтобы читать миллион страниц руководства. – jadenPete