簡體   English   中英

如何在 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: 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

argparse當然是你想學習的命令行選項和參數的工具——它是所有開發人員都應該知道的工具的一部分(帶有loggingpdb )。

話雖如此,對於這種情況,您也可以在沒有argparse情況下非常簡單地解決問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM