網站首頁 編程語言 正文
前言
許多任務程序如果為其構造為一個命令行界面,就可以通過接受不同的參數來改變它的工作方式。例如,在爬蟲程序中,不同?URL
?通常可以作為命令行參數傳遞給任務程序,從而可以爬取不同網頁中的數據。在?Python
?標準庫中包含一個強大的?argparse
?模塊,可以輕松創建豐富的命令行參數解析。
添加命令行參數的一般步驟
在程序腳本中,?argparse
?的基本使用方式可以分三個步驟顯示:
- 定義腳本要接受的參數,生成新的參數解析器
- 調用定義的解析器,返回一個包含所有結果參數的對象
- 使用帶有參數的命令調用腳本,使得定義的參數行為生效
一般而言,使用命令行參數的腳本遵循以下結構:
導入相關庫
定義函數
定義參數解析器
對參數進行操作
使用參數調用函數,以執行不同操作
其中,一般使用?main
?函數來顯式的聲明代碼的執行入口,簡單情況下,我們可以直接使用命令行傳入的參數而無需進行復雜處理。
命令行參數示例
接下來,我們通過一個示例來了解如何添加并使用命令行參數。首先創建一個腳本?argparse_example.py
,該腳本接受單個整數作為位置參數,并打印執行次數的?“Hello world.
”。腳本代碼如下,我們遵循上述結構,其中定義的?main
?僅僅執行打印功能:
import argparse def main(num): ????print('Hello world.\n' * num) if __name__ == '__main__': ????parse = argparse.ArgumentParser() ????parse.add_argument('number', type=int, help='A number') ????args = parse.parse_args() ????main(args.number)
在腳本中,參數通過?add_arguments
?添加到解析器。定義了所有參數之后,調用?parse_args()
?將返回一個包含參數解析結果的對象,如果出現錯誤則退出執行。
調用腳本并檢查參數的使用方式,不帶參數調用腳本時會自動顯示幫助信息,使用參數?-h
?可以顯示擴展幫助信息:
$ python argparse_example.py usage: argparse_example.py [-h] number argparse_example.py: error: the following arguments are required: number $ python argparse_example.py -h usage: argparse_example.py [-h] number positional arguments: ??number ?????A number optional arguments: ??-h, --help ?show this help message and exit
使用額外參數調用腳本,可以按程序預期執行腳本:
$ python argparse_example.py 3 Hello world. Hello world. Hello world. $ python argparse_example.py three usage: argparse_example.py [-h] number argparse_example.py: error: argument number: invalid int value: 'three'
更改腳本,添加可選參數用于接受所需打印的字符串,且默認值為 “Hello world
”,編寫argparse_example_2.py
?腳本如下所示:
import argparse def main(string, num): ????print(string * num) if __name__ == '__main__': ????parser = argparse.ArgumentParser() ????parser.add_argument('num', type=int, help='A number') ????parser.add_argument('-s', type=str, help='String to print', default='Hello world.\n') ????args = parser.parse_args() ????main(args.s, args.num)
再次執行腳本,可以看到幫助已經更新,使用?-s
?選項可以打印不同的字符串:
$ python argparse_example_2.py -h usage: argparse_example_2.py [-h] [-s S] num positional arguments: ??num ????????A number optional arguments: ??-h, --help ?show this help message and exit ??-s S ???????String to print $ python argparse_example_2.py 3Hello world. Hello world. Hello world. $ python argparse_example_2.py 3 -s 'I love movie' I love movieI love movieI love movie
在實際場景中,我們應當為每個參數都添加一個幫助描述信息,參數可以分為位置參數和可選參數,它們的使用方式具有較大差別:
- 如果參數以?
-
?開頭,則將其視為可選參數,例如腳本中的?-s
?參數。否則,該參數為位置參數,如腳本中的數字參數 - 為了清楚起見,應當始終為可選參數定義默認值。如果不顯式的定義默認值,則默認為?
None
,但這可能會令使用者困惑 - 同時,在添加命令行參數時應當始終利用?
add_agrment()
?方法的?help
?參數添加帶有參數描述的幫助信息,這在調用腳本時即為關鍵,能夠幫助使用者了解每個命令行參數的含義
原文鏈接:https://juejin.cn/post/7128037718612770824
相關推薦
- 2022-02-23 利用?trap?在?docker?容器優雅關閉前執行環境清理的方案_docker
- 2022-04-12 C++中菱形繼承的解釋與處理詳解_C 語言
- 2022-04-02 一文講解Kotlin中的contract到底有什么用_Android
- 2022-10-07 C++函數指針與指針函數有哪些關系和區別_C 語言
- 2022-05-29 ASP.NET?Core全局異常處理_實用技巧
- 2023-10-16 向前端傳遞Long類型數據時發生精度缺失解決辦法
- 2022-07-02 Python使用?TCP協議實現智能聊天機器人功能_python
- 2023-05-09 React組件三大核心屬性State?props?Refs介紹_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支