sys.argv可以处理可选参数吗?

2024-09-26 18:14:10 发布

您现在位置:Python中文网/ 问答频道 /正文

from sys import argv
script, lira_cbt, [eur_hedge] = argv

if eur_hedge == None:
    #Do x
else:
    #Do y

我希望它能以lira_cbt作为一个论点(做x),或者同时以lira_cbt和eur_hedge作为一个论点(做y)。这可以用sys.argv实现吗?


Tags: fromimportnoneifsysscripteurdo
3条回答

只要使用sys.argv的长度

if len(sys.argv) == 2:
  # do X
else:
  # do Y

如果这不是一个废弃脚本的一部分,请考虑使用argparsehttp://docs.python.org/library/argparse.html

目前,它将更加复杂,但它将帮助您记录程序接受的选项,并提供有用的错误消息,而不像 用户可能无法理解的“要解包的值太多”。

另一个选项是使用try从argv列表中提取值:

lira_cbt = sys.argv[1]
try:
  eur_hedge = sys.argv[2]
except IndexError:
  eur_hedge = None

if eur_hedge == None:
    # Do X
else:
    # Do Y

您还可以查看getopt以获得更灵活的命令行参数解析器。

相关问题 更多 >

    热门问题