如何在 python 函数中使用可选的命令行参数?
How to use optional command line arguments in a python function?
我想要一种更紧凑和可扩展的方式来使用命令行参数来提供 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())
有效。但是我对这个条件不满意,有没有办法让它更简单?
您可以尝试使用 argparse 或 Typer
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
argparse
当然是您想要学习命令行选项和参数的工具 - 它是所有开发人员都应该知道的工具的一部分(使用 logging
和 pdb
)。
话虽这么说,对于这种情况,您也可以非常简单地解决问题而无需 argparse
:
if __name__ == "__main__":
args = sys.argv[1:]
print(getRelevant(*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())
有效。但是我对这个条件不满意,有没有办法让它更简单?
您可以尝试使用 argparse 或 Typer
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
argparse
当然是您想要学习命令行选项和参数的工具 - 它是所有开发人员都应该知道的工具的一部分(使用 logging
和 pdb
)。
话虽这么说,对于这种情况,您也可以非常简单地解决问题而无需 argparse
:
if __name__ == "__main__":
args = sys.argv[1:]
print(getRelevant(*args))