簡體   English   中英

Python 神奇的 main() 簽名,如 Perl 6

[英]Python magical main() signature like Perl 6

python 是否有任何方法可以輕松快速地制作 CLI 實用程序,而無需大量參數解析樣板?

在 Perl 6 中, MAIN子程序的簽名會自動解析命令行參數。

有沒有辦法在沒有大量樣板的情況下在 Python 中做類似的事情? 如果沒有,最好的方法是什么? 我正在考慮一個函數裝飾器,它將執行一些內省並做正確的事情。 如果已經沒有什么像它了,我在想像下面這樣的東西。 這是個好主意嗎?

@MagicMain
def main(one, two=None, *args, **kwargs):
    print one # Either --one or first non-dash argument
    print two # Optional --arg with default value (None)
    print args # Any other non-dash arguments
    print kwargs # Any other --arguments

if __name__ == '__main__':
    main(sys.argv)

Baker庫包含一些方便的裝飾器,可以根據方法簽名“自動”創建 arg 解析器。

例如:

@baker.command
def test(start, end=None, sortby="time"):
  print "start=", start, "end=", end, "sort=", sortby

$ script.py --sortby name 1
start= 1 end= sortby= name

我不太確定你認為解析樣板文件是什么。 “當前”的方法是對 python 使用argparse系統。 較舊的系統是getopt

Simon Willison 的optfunc模塊試圖提供您正在尋找的功能。

選擇opterator模塊處理這個。

https://github.com/buchuki/opterator

Python 具有用於執行此操作的getopts模塊。

最近我遇到了裝飾和簡化命令行處理的開始項目。

它似乎提供了許多您正在尋找的相同功能。

暫無
暫無

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

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