0

我有以下片段,我正在检查第一个参数并运行以下错误..任何人都可以帮助如何使第一个参数成为可选?

片段代码:-

branch = ''
if  sys.argv[1]:
    branch = sys.argv[1]

错误:-

Traceback (most recent call last):
  File "test.py", line 102, in <module>
    main()
  File "test.py", line 66, in main
    if  sys.argv[1]:
IndexError: list index out of range
4

3 回答 3

1

要将参数输入 python,您可以使用getopt 模块。这里的参数可以是可选的,只要存在正确的标志,就可以按任何顺序输入。

在下面的示例中,用户有两个可选参数要设置,输入文件名和数据库名。该代码可以使用

python example.py -f test.txt -d HelloWorld

或者

python example.py 文件=test.txt 数据库=HelloWorld

或两者的混合和匹配。可以更改标志和名称以反映您的需求。

import getopt

def main(argv):
     inputFileName = ''
     databaseName = ''
     try:                                                                     
         opts, args = getopt.getopt(argv,"f:d:",["file=","database="])
     except getopt.GetoptError:                                                
         print('-f <inputfile> -d <databasename> -c  <collectionname>')
         sys.exit()
     for opt, arg in opts:                                                     
         if opt in ('-f','--file'):                                              
             inputFileName = arg                                                
         elif opt in ('-d','--database'):                                        
             databaseName = arg

if __name__ == "__main__":
    main(sys.argv[1:])
于 2013-10-29T06:06:01.410 回答
0

使用异常处理(EAFP):

try:
    branch = sys.argv[1]
except IndexError:
    branch = ''
于 2013-10-29T05:41:17.200 回答
0

您可以使用:

branch = sys.argv[1] if len(sys.argv) >= 2 else ''
于 2013-10-29T05:57:20.950 回答