我有以下代码片段,我正在检查第一个参数并运行以下错误..有谁可以帮助如何使第一个参数可选?
SNIPPET CODE: -
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
答案 0 :(得分:1)
要将参数输入python,您可以使用getopt module。这里的参数可以是可选的,只要存在正确的标志,就可以按任何顺序输入。
在下面的示例中,用户有两个可选参数,输入文件名和数据库名。可以使用
调用代码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:])
答案 1 :(得分:0)
使用异常处理(EAFP):
try:
branch = sys.argv[1]
except IndexError:
branch = ''
答案 2 :(得分:0)
您可以使用:
branch = sys.argv[1] if len(sys.argv) >= 2 else ''