python獲取命令行參數(shù)實(shí)例方法講解
Python 在命令行解析方面給出了類(lèi)似的幾個(gè)選擇:自己解析, 自給自足(batteries-included)的方式,以及大量的第三方方式。
自己解析
你可以從 sys 模塊中獲取程序的參數(shù)。
import sys if __name__ == ’__main__’: for value in sys.argv: print(value)
自給自足
在 Python 標(biāo)準(zhǔn)庫(kù)中已經(jīng)有幾個(gè)參數(shù)解析模塊的實(shí)現(xiàn): getopt 、 optparse ,以及最近的 argparse 。argparse 允許程序員為用戶提供一致的、有幫助的用戶體驗(yàn),但就像它的 GNU 前輩一樣,它需要程序員做大量的工作和“ 模板代碼 ”才能使它“奏效”。
from argparse import ArgumentParser if __name__ == '__main__': argparser = ArgumentParser(description=’My Cool Program’) argparser.add_argument('--foo', '-f', help='A user supplied foo') argparser.add_argument('--bar', '-b', help='A user supplied bar') results = argparser.parse_args() print(results.foo, results.bar)
CLI 的現(xiàn)代方法
Click 框架使用 裝飾器 的方式來(lái)構(gòu)建命令行解析。
import click @click.command()@click.option('-f', '--foo', default='foo', help='User supplied foo.')@click.option('-b', '--bar', default='bar', help='User supplied bar.')def echo(foo, bar): '''My Cool Program It does stuff. Here is the documentation for it. ''' print(foo, bar) if __name__ == '__main__':echo()
在 Click 接口中添加參數(shù)就像在堆棧中添加另一個(gè)裝飾符并將新的參數(shù)添加到函數(shù)定義中一樣簡(jiǎn)單。
知識(shí)拓展:
Typer 建立在 Click 之上,是一個(gè)更新的 CLI 框架,它結(jié)合了 Click 的功能和現(xiàn)代 Python 類(lèi)型提示 。使用 Click 的缺點(diǎn)之一是必須在函數(shù)中添加一堆裝飾符。CLI 參數(shù)必須在兩個(gè)地方指定:裝飾符和函數(shù)參數(shù)列表。Typer 免去你造輪子 去寫(xiě) CLI 規(guī)范,讓代碼更容易閱讀和維護(hù)。
import typer cli = typer.Typer() @cli.command()def echo(foo: str = 'foo', bar: str = 'bar'): '''My Cool Program It does stuff. Here is the documentation for it. ''' print(foo, bar) if __name__ == '__main__':cli()
到此這篇關(guān)于python獲取命令行參數(shù)實(shí)例方法講解的文章就介紹到這了,更多相關(guān)python獲取命令行參數(shù)實(shí)現(xiàn)方法內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案2. ASP.NET泛型三之使用協(xié)變和逆變實(shí)現(xiàn)類(lèi)型轉(zhuǎn)換3. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))4. 如何在jsp界面中插入圖片5. XML基本概念XPath、XSLT與XQuery函數(shù)介紹6. JS中map和parseInt的用法詳解7. PHP循環(huán)與分支知識(shí)點(diǎn)梳理8. jsp實(shí)現(xiàn)登錄界面9. AspNetCore&MassTransit Courier實(shí)現(xiàn)分布式事務(wù)的詳細(xì)過(guò)程10. JSP數(shù)據(jù)交互實(shí)現(xiàn)過(guò)程解析
