如何在python函数中使用可选的命令行参数?

2024-09-30 14:31:37 发布

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

我想要一种更紧凑、更可扩展的方式来使用命令行args来为python函数提供数据,以下是我所拥有的:

def getRelevant (number = 5, sortBy = "Change"):
    number, sortBy = int(number), sortBy
    relevant = ...
    return relevant

if __name__ == "__main__":
    if len(sys.argv) == 3:
        print(getRelevant(sys.argv[1], sys.argv[2]))
    elif len(sys.argv) == 2:
        print(getRelevant(sys.argv[1]))
    else:
        print(getRelevant())

它起作用了。但我不喜欢这个条件,有没有办法让它更简单


Tags: 函数命令行numberlenifdefsys方式
3条回答

argparse当然是您想要学习的命令行选项和参数工具-它是所有开发人员都应该知道的工具的一部分(使用loggingpdb

也就是说,对于这种情况,您也可以非常简单地解决问题,而无需argparse

if __name__ == "__main__":
    args = sys.argv[1:]
    print(getRelevant(*args))

您可以尝试使用argparse或Typer

argparse:https://docs.python.org/3/library/argparse.html

打字机:https://typer.tiangolo.com/

Argparse应该这样做。它功能丰富、灵活。 就您的情况而言,以下内容起到了作用:

import argparse
parser = argparse.ArgumentParser(description='Description of your app here.')
parser.add_argument('-N', ' integers', default=5,  help='your help text here')
parser.add_argument('-S', ' sortby', default='Change', choices=['Change', 'SomeOtherOption'], help='some help text here ')

if __name__ == "__main__":
  args = parser.parse_args()
  print(args.integers) # prints 5 if nothing provided
  print(args.sortby)  # prints 'Change' if nothing provided

相关问题 更多 >