如何在python中设置可选输入参数

如何在python中设置可选输入参数,python,parameters,Python,Parameters,我在下面的代码段中检查了第一个参数,并遇到了以下错误..有人能帮助我选择第一个参数吗 代码片段:- 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.a

我在下面的代码段中检查了第一个参数,并遇到了以下错误..有人能帮助我选择第一个参数吗

代码片段:-

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
回溯(最近一次呼叫最后一次):
文件“test.py”,第102行,在
main()
文件“test.py”,第66行,在main中
如果系统argv[1]:
索引器:列表索引超出范围
使用异常处理()

您可以使用:

branch = sys.argv[1] if len(sys.argv) >= 2 else ''

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

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

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

python example.py file=test.txt database=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:])
导入getopt
def总管(argv):
inputFileName=“”
数据库名称=“”
尝试:
opts,args=getopt.getopt(argv,“f:d:”,[“file=”,“database=”)
除getopt.GetoptError外:
打印('-f-d-c')
sys.exit()
对于opt,opt中的参数:
如果选择加入('-f','-file'):
inputFileName=arg
elif opt-in('-d','-database'):
databaseName=arg
如果名称=“\uuuuu main\uuuuuuuu”:
main(sys.argv[1:])

使用argparse模块
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:])