2016-01-06 78 views
0

我无法将参数传递给我的脚本。 脚本启动命令行:myscript.py -c随机 我在我的代码中使用getopt(在那里给出),但此代码没有循环参数,因为稍后在程序中未定义tested_company变量,我在哪里出错?python脚本解析多个参数

tested_company=None 
try: 
    opts, args = getopt.getopt(sys.argv[1:], "hc:i", ['help', 'company', 'info']) #first argument ignored because zabbix giving it and being useless 
except getopt.GetoptError as e: 
    print (e) 
    usage() 
    sys.exit(3) 
if not opts: 
    #print ('No options supplied, only updating the database') 
    print("3") 
    sys.exit(3) 
else: 
    for opt, arg in opts: 
     if opt in ('-h', '--help'): 
      usage() 
      sys.exit(0) 
     elif opt in ('-c', '--company'): 
      tested_company = arg 
     elif opt == '-i': 
      displayInfos=1 
+0

您认为'tested_company'是什么?它在第一行设置为“无”,然后在任何时候都不重新分配。 – JCVanHamme

+0

它在“elif opt in('-c','--company'):”部分,当我指定myscript.py -c XXXXXX时,被测试的公司应该是XXXXXX但它不是 – kuzko

+0

什么是实际错误?它是来自这个代码还是其他的东西? – JCVanHamme

回答

1

opts变量可能不会被初始化,而是比在try语句外被调用。为什么你不能做以下的任何特定原因?

tested_company=None 
try: 
    opts, args = getopt.getopt(sys.argv[1:], "hc:i", ['help', 'company', 'info']) #first argument ignored because zabbix giving it and being useless 
    if not opts: 
     #print ('No options supplied, only updating the database') 
     print("3") 
     sys.exit(3) 
    else: 
     for opt, arg in opts: 
      if opt in ('-h', '--help'): 
       usage() 
       sys.exit(0) 
      elif opt in ('-c', '--company'): 
       tested_company = arg 
      elif opt == '-i': 
       displayInfos=1 
except getopt.GetoptError as e: 
    print (e) 
    usage() 
    sys.exit(3) 
+0

这确实比我有更好的代码 – kuzko

2

我想你错过了你的getopt调用company后等号。此代码的工作对我来说:

import getopt 
import sys 

tested_company=None 
try: 
    opts, args = getopt.getopt(sys.argv[1:], "hc:i", ['help', 'company=', 'info']) #first argument ignored because zabbix giving it and being useless 
    print(opts) 
except getopt.GetoptError as e: 
    print (e) 
    usage() 
    sys.exit(3) 
if not opts: 
    #print ('No options supplied, only updating the database') 
    print("3") 
    sys.exit(3) 
else: 
    for opt, arg in opts: 
     if opt in ('-h', '--help'): 
      usage() 
      sys.exit(0) 
     elif opt in ('-c', '--company'): 
      tested_company = arg 
     elif opt == '-i': 
      displayInfos=1 

print(tested_company) 

调用此与

> python .\script.py -c xxxx 

[('-c', 'xxxx')] 
xxxx 

> python .\script.py --company xxxx 

调用给

[('--company', 'xxxx')] 
xxxx