将参数传递给python脚本的问题

时间:2018-04-27 15:58:33

标签: python

我有一个python脚本,我想传递命令行参数。我从Windows Python Naming IssuePython Command Line Arguments Tutorial获得了一些指导。我没有在执行脚本时弹出的任何错误,但是当没有给出命令行参数时我没有得到预期的错误消息,在给出-h命令行时也没有得到print命令。我已经向-i和-s命令行参数添加了打印命令,并且无法成功通过任何命令行参数(尽管没有错误)我不知道为什么这不起作用因为我不熟悉Python。如果有人能指出这个问题,我将不胜感激。

import re
import os
import sys
import getopt

def main(argv):
   ipaddress = ''
   scac = ''
   try:
      opts, args = getopt.getopt(argv,"hi:s:",["ipaddress=","scac="])
   except getopt.GetoptError:
      print 'test.py -i <ipaddress> -s <scac>'
   sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print 'FedConnectStatus.py -i <iobipaddress> -s <scac>'
         sys.exit()
      elif opt in ("-i", "--ipaddress"):
         ipaddress = arg
      elif opt in ("-s", "--scac"):
         scac = arg

1 个答案:

答案 0 :(得分:0)

  • 你没有得到帮助,因为你在root上有sys.exit而不是它 如果阻止,应该在里面

如果你没有传递任何选项,那么opts将清空列表然后你可以手动检查并执行操作

def main(argv):
    #print argv
    ipaddress = ''
    scac = ''
    try:
        opts, args = getopt.getopt(argv,"hi:s:",["ipaddress=","scac="])
        if not opts: # if no option given 
            print 'usage test.py -i <ipaddress> -s <scac>'
            sys.exit(2)
    except getopt.GetoptError:
        print 'test.py -i <ipaddress> -s <scac>'
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print 'FedConnectStatus.py -i <iobipaddress> -s <scac>'
            sys.exit() # it should be on level of if
        elif opt in ("-i", "--ipaddress"):
            ipaddress = arg
        elif opt in ("-s", "--scac"):
            scac = arg

if __name__ == "__main__":
   main(sys.argv[1:])


#  $ python cmderr.py -h
#  FedConnectStatus.py -i <iobipaddress> -s <scac>