我想使用命令行参数来提供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