最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中argparse模塊用法詳解(小白入門)

 更新時間:2026年01月27日 11:31:56   作者:vvvdg  
argparse是Python標準庫中用于解析命令行參數(shù)的模塊,提供了一種簡單而靈活的方式來處理命令行輸入,并幫助用戶構(gòu)建具有參數(shù)選項和幫助信息的命令行界面,這篇文章主要介紹了python中argparse模塊用法的相關(guān)資料,需要的朋友可以參考下

argparse 詳細講解

argparse 是 Python 標準庫中的一個模塊,專門用來處理命令行參數(shù)。

什么是命令行參數(shù)?

命令行參數(shù)就是你在運行程序時,在程序名字后面加的一些額外信息。

舉例說明:

# 沒有參數(shù)
python main.py

# 有參數(shù)
python main.py --debug --batch_size 32 --lr 0.001

這里的 --debug、--batch_size 32、--lr 0.001 就是命令行參數(shù)。

一、 含義與簡介

argparse 是 Python 標準庫(從 Python 3.2 開始引入,替代了舊的 optparsegetopt)中的一個模塊,用于解析命令行參數(shù)。

簡單來說,當你在終端或命令提示符中運行一個 Python 腳本時,你可能會在腳本名后面輸入一些額外的信息,例如:

python my_script.py --input data.txt --verbose --output results.json

argparse 的作用就是:

  • 解析這些跟在腳本名后面的參數(shù)(如 --input, data.txt 等)。
  • 驗證這些參數(shù)是否符合預(yù)期(例如,檢查文件是否存在,參數(shù)類型是否正確)。
  • 自動生成幫助和使用說明(當用戶使用 -h--help 時)。
  • 將這些參數(shù)轉(zhuǎn)換為 Python 對象(如字符串、整數(shù)、列表等),方便你在代碼中使用。

它的核心目標是讓您的腳本擁有一個標準、專業(yè)、用戶友好的命令行界面。

二、核心概念與使用規(guī)則

使用 argparse 通常遵循以下四個步驟:

  1. 創(chuàng)建一個解析器對象 - 這是所有功能的起點。
  2. 添加參數(shù) - 告訴解析器你期望哪些參數(shù)。
  3. 解析參數(shù) - 讓解析器去分析用戶輸入的命令行。
  4. 使用參數(shù) - 在代碼中使用解析后的結(jié)果。

三、 語法規(guī)范與詳細用法

讓我們通過一個具體的例子來學(xué)習(xí),并逐步擴展其功能。

步驟 1:導(dǎo)入模塊并創(chuàng)建解析器

import argparse

# 創(chuàng)建 ArgumentParser 對象,description 參數(shù)用于描述程序的功能,會顯示在幫助信息中。
parser = argparse.ArgumentParser(description='這是一個處理文件的示例程序。')
  • ArgumentParser 是主要的類
  • description 是程序的描述,會在幫助信息中顯示

步驟 2:添加參數(shù)

這是最核心的一步。使用 add_argument() 方法來定義參數(shù)。

參數(shù)主要分為兩大類:

  • 位置參數(shù):必須提供的參數(shù),其含義由它在命令行中的位置決定。
    • 例如:cp source_file dest_file 中的 source_filedest_file。
  • 可選參數(shù):以 --- 開頭的參數(shù),順序可以顛倒。
    • 例如:ls -l -als --all --long。

a) 添加位置參數(shù)(必須提供的參數(shù))

使用 add_argument(),第一個參數(shù)就是參數(shù)的名字(不帶 -)。

# 添加一個位置參數(shù) ‘filename'
parser.add_argument('filename', help='要處理的輸入文件') # help 參數(shù)用于生成幫助信息

b) 添加可選參數(shù)(以 - 或 – 開頭)

使用 add_argument(),第一個參數(shù)是短選項(如 -f)或長選項(如 --file),或者兩者都提供。

短參數(shù) :

形式:單個短橫線 - 后跟單個字母
示例 :v, -h, -f

長參數(shù):

形式:雙短橫線 – 后跟完整單詞

示例:–verbose, --help, --file

推薦使用:同時提供短參數(shù)和長參數(shù)

# 添加一個可選參數(shù) ‘--output' (短選項 ‘-o‘)
parser.add_argument('-o', '--output', help='輸出文件的路徑')

# 添加一個布爾標志,action=‘store_true' 表示如果指定了這個參數(shù),其值為 True,否則為 False。
parser.add_argument('-v', '--verbose', action='store_true', help='顯示詳細處理信息')

# 指定參數(shù)類型,比如整數(shù)
parser.add_argument('-n', '--number', type=int, help='一個數(shù)字參數(shù)', default=1) # default 指定默認值

# 限制參數(shù)的選擇范圍
parser.add_argument('--mode', choices=['fast', 'slow', 'debug'], default='fast', help='程序運行模式')

add_argument 常用參數(shù)詳解:

  • name/flags: 參數(shù)的名字或標簽列表(如 'filename'['-o', '--output'])。
  • action: 當參數(shù)在命令行中出現(xiàn)時,要采取的動作。
    • 'store': 默認動作,存儲參數(shù)的值。
    • 'store_true' / 'store_false': 存儲 TrueFalse
    • 'store_const': 存儲一個被 const 參數(shù)指定的常量值。
    • 'append': 將同一個參數(shù)出現(xiàn)的多個值存儲到一個列表中。
  • type: 參數(shù)應(yīng)該被轉(zhuǎn)換成的類型(如 int, float, str)。
  • default: 如果參數(shù)未提供,則使用此默認值。
  • choices: 一個容器,參數(shù)的值必須是其中的一個。
  • required: 對于可選參數(shù),是否必須提供(True/False)。慎用,因為這違反了“可選”的初衷。
  • help: 參數(shù)的簡要描述。

add_argument 方法的詳細參數(shù)

常用參數(shù):

參數(shù)名作用示例
name/flags參數(shù)名稱'--lr'['-l', '--lr']
type參數(shù)類型int, float, str
default默認值default=32
help幫助信息help='學(xué)習(xí)率'
action動作類型'store_true', 'store_const'
choices可選值列表choices=[1, 2, 3]
required是否必須required=True

action 參數(shù)詳解:

# store_true: 如果指定了該參數(shù),就存儲 True,否則存儲 False
parser.add_argument('--debug', action='store_true')
# python script.py --debug  →  args.debug = True
# python script.py          →  args.debug = False

# store_const: 存儲一個固定值
parser.add_argument('--mode', action='store_const', const='fast')
# python script.py --mode  →  args.mode = 'fast'

# store: 存儲提供的值(默認動作)
parser.add_argument('--name', type=str)
# python script.py --name Alice  →  args.name = 'Alice'

# append: 將多個值收集到列表中
parser.add_argument('--add', action='append')
# python script.py --add a --add b  →  args.add = ['a', 'b']

步驟 3:解析參數(shù)

調(diào)用 parse_args() 方法。它會自動查看 sys.argv(即命令行輸入),進行解析,并返回一個包含所有參數(shù)值的命名空間對象。

args = parser.parse_args()
# 現(xiàn)在,你可以通過 args.參數(shù)名 來訪問每個參數(shù)的值

步驟 4:使用參數(shù)

現(xiàn)在,你可以在你的程序邏輯中使用這些解析好的參數(shù)了。

print(f"正在處理文件: {args.filename}")
if args.verbose:
    print("詳細模式已開啟。")
if args.output:
    print(f"結(jié)果將輸出到: {args.output}")
print(f"運行模式為: {args.mode}")
print(f"數(shù)字參數(shù)是: {args.number}")

四、完整示例與演示

完整示例1

讓我們把所有代碼組合起來,文件名為 example.py

import argparse

# 1. 創(chuàng)建解析器
parser = argparse.ArgumentParser(description='一個強大的文件處理工具。')

# 2. 添加參數(shù)
parser.add_argument('filename', help='輸入文件的名稱')
parser.add_argument('-o', '--output', help='輸出文件的路徑')
parser.add_argument('-v', '--verbose', action='store_true', help='開啟詳細輸出')
parser.add_argument('-n', '--number', type=int, default=1, help='處理的次數(shù) (默認: 1)')
parser.add_argument('--mode', choices=['fast', 'slow', 'debug'], default='fast', help='選擇運行模式')

# 3. 解析參數(shù)
args = parser.parse_args()

# 4. 使用參數(shù)
print(f"輸入文件: {args.filename}")

if args.verbose:
    print("狀態(tài): 詳細模式已激活。")
    print(f"正在以 '{args.mode}' 模式運行。")
    print(f"將處理 {args.number} 次。")

if args.output:
    print(f"輸出將保存至: {args.output}")

# ... 這里是你實際的程序邏輯,例如讀寫文件等 ...

在命令行中的運行演示:

  1. 獲取幫助(這是 argparse 自動提供的強大功能):

    python example.py -h
    

    輸出:

    usage: example.py [-h] [-o OUTPUT] [-v] [-n NUMBER] [--mode {fast,slow,debug}] filename
    
    一個強大的文件處理工具。
    
    positional arguments:
      filename              輸入文件的名稱
    
    optional arguments:
      -h, --help           show this help message and exit
      -o OUTPUT, --output OUTPUT
                            輸出文件的路徑
      -v, --verbose        開啟詳細輸出
      -n NUMBER, --number NUMBER
                            處理的次數(shù) (默認: 1)
      --mode {fast,slow,debug}
                            選擇運行模式 (默認: fast)
    
  2. 正常使用

    python example.py data.txt -o out.json -v -n 5 --mode slow
    

    輸出:

    輸入文件: data.txt
    狀態(tài): 詳細模式已激活。
    正在以 'slow' 模式運行。
    將處理 5 次。
    輸出將保存至: out.json
    
  3. 使用錯誤參數(shù)argparse 會自動報錯):

    python example.py
    # 錯誤: error: the following arguments are required: filename
    
    python example.py data.txt --mode superfast
    # 錯誤: error: argument --mode: invalid choice: 'superfast' (choose from 'fast', 'slow', 'debug')
    

完整示例2

import argparse

def main():
    # 1. 創(chuàng)建解析器
    parser = argparse.ArgumentParser(
        description='一個簡單的文件處理程序',
        epilog='示例: python script.py input.txt --verbose --output result.txt'
    )
    
    # 2. 添加位置參數(shù)(必須提供)
    parser.add_argument('input_file', help='要處理的輸入文件')
    
    # 3. 添加可選參數(shù)
    parser.add_argument('--output', '-o', 
                       type=str, 
                       default='output.txt',
                       help='輸出文件名(默認: output.txt)')
    
    parser.add_argument('--verbose', '-v',
                       action='store_true',
                       help='顯示詳細處理信息')
    
    parser.add_argument('--count', '-c',
                       type=int,
                       default=1,
                       choices=[1, 2, 3, 4, 5],
                       help='處理次數(shù)(1-5,默認: 1)')
    
    # 4. 解析參數(shù)
    args = parser.parse_args()
    
    # 5. 使用參數(shù)
    print(f"輸入文件: {args.input_file}")
    print(f"輸出文件: {args.output}")
    print(f"詳細模式: {args.verbose}")
    print(f"處理次數(shù): {args.count}")
    
    # 模擬處理邏輯
    if args.verbose:
        print("開始處理文件...")
        print(f"正在處理: {args.input_file}")
        print(f"將保存到: {args.output}")
        print(f"將處理 {args.count} 次")

if __name__ == '__main__':
    main()

運行示例:

# 查看幫助
python script.py -h
# 輸出:
# usage: script.py [-h] [--output OUTPUT] [--verbose] [--count COUNT] input_file
# 
# 一個簡單的文件處理程序
# 
# positional arguments:
#   input_file           要處理的輸入文件
# 
# optional arguments:
#   -h, --help           show this help message and exit
#   --output OUTPUT, -o OUTPUT
#                        輸出文件名(默認: output.txt)
#   --verbose, -v        顯示詳細處理信息
#   --count COUNT, -c COUNT
#                        處理次數(shù)(1-5,默認: 1)
# 
# 示例: python script.py input.txt --verbose --output result.txt

# 正常運行
python script.py data.txt --verbose --output result.txt --count 3
# 輸出:
# 輸入文件: data.txt
# 輸出文件: result.txt
# 詳細模式: True
# 處理次數(shù): 3
# 開始處理文件...
# 正在處理: data.txt
# 將保存到: result.txt
# 將處理 3 次

五、常見問題解答

1. 為什么有些參數(shù)用--,有些不用?

  • -- 的是可選參數(shù),可以不提供
  • 不用 -- 的是位置參數(shù),必須提供

2.action='store_true'是什么意思?

意思是:“如果用戶提供了這個參數(shù),就把它設(shè)為 True;如果沒提供,就設(shè)為 False”

3. 參數(shù)名中的-和_有什么區(qū)別?

在代碼中使用時,--batch-size 會變成 args.batch_size(橫線變下劃線)

4. 如何讓某個參數(shù)是必須的?

parser.add_argument('--required_arg', required=True, help='這個參數(shù)必須提供')

六、總結(jié)

  • argparse 是 Python 中用于構(gòu)建命令行接口的標準工具。
  • 使用流程:創(chuàng)建解析器 → 添加參數(shù) → 解析參數(shù) → 使用結(jié)果。
  • 它能自動處理 -h/--help 幫助信息和錯誤提示,大大提升了腳本的易用性和健壯性。
  • 通過 add_argument() 方法的豐富選項,你可以定義各種復(fù)雜的參數(shù)規(guī)則。

對于絕大多數(shù)命令行程序來說,argparse 的功能已經(jīng)完全足夠。它是每個 Python 開發(fā)者都應(yīng)該掌握的基礎(chǔ)庫之一。

argparse 就像是一個智能的"問卷調(diào)查系統(tǒng)":

  1. 設(shè)計問卷 - 用 ArgumentParseradd_argument 定義問題
  2. 用戶填寫 - 用戶在命令行輸入?yún)?shù)
  3. 自動批改 - parse_args() 自動解析并檢查答案
  4. 獲取結(jié)果 - 通過 args.參數(shù)名 獲取用戶的選擇

到此這篇關(guān)于python中argparse模塊用法的文章就介紹到這了,更多相關(guān)python中argparse模塊用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    這篇文章主要介紹了Python實現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法,結(jié)合實例形式分析了Python針對sqlite數(shù)據(jù)庫的連接、讀取及使用寫操作包(xlwt)生成Excel表的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Python3爬取英雄聯(lián)盟英雄皮膚大圖實例代碼

    Python3爬取英雄聯(lián)盟英雄皮膚大圖實例代碼

    這篇文章主要介紹了Python3爬取英雄聯(lián)盟英雄皮膚大圖的實例代碼,文中較詳細的給大家介紹了爬蟲思路及完整代碼,需要的朋友可以參考下
    2018-11-11
  • 基于Pytorch實現(xiàn)邏輯回歸

    基于Pytorch實現(xiàn)邏輯回歸

    這篇文章主要為大家詳細介紹了基于Pytorch實現(xiàn)邏輯回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 詳解python中return和print的區(qū)別和用途

    詳解python中return和print的區(qū)別和用途

    在 Python 中,return 和 print 是兩種常見的語句,用于在函數(shù)中輸出信息或返回值,盡管它們看起來相似,但它們有不同的作用和用法,本文將詳細介紹 return 和 print 在函數(shù)中的區(qū)別,并提供豐富的示例代碼,以幫助你更好地理解它們的用途
    2023-11-11
  • python字符串加密解密的三種方法分享(base64 win32com)

    python字符串加密解密的三種方法分享(base64 win32com)

    這篇文章主要介紹了python字符串加密解密的三種方法,包括用base64、使用win32com.client、自己寫的加密解密算法三種方法,大家參考使用吧
    2014-01-01
  • Python爬蟲進階之爬取某視頻并下載的實現(xiàn)

    Python爬蟲進階之爬取某視頻并下載的實現(xiàn)

    這篇文章主要介紹了Python爬蟲進階之爬取某視頻并下載的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 深入理解Django的信號機制

    深入理解Django的信號機制

    本文主要介紹了深入理解Django的信號機制,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 三大Python時間處理庫datetime/arrow/pandas的使用通關(guān)指南

    三大Python時間處理庫datetime/arrow/pandas的使用通關(guān)指南

    本文從標準庫datetime的底層原理講起,到arrow的簡潔優(yōu)雅,再到pandas的時間序列大殺器,覆蓋99%的Python時間處理場景,全文附代碼示例,時區(qū)避坑指南和工程落地建議
    2026-03-03
  • python使用雙豎線分割的實現(xiàn)

    python使用雙豎線分割的實現(xiàn)

    本文主要介紹了python使用雙豎線分割的實現(xiàn),通過接收用戶輸入的字符串,使用split()方法進行分割,并將結(jié)果輸出給用戶,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • python如何用pyecharts制作詞云圖

    python如何用pyecharts制作詞云圖

    大家好,本篇文章主要講的是python如何用pyecharts制作詞云圖,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論

抚州市| 乌兰察布市| 安阳市| 乐亭县| 兴化市| 措勤县| 荥经县| 临澧县| 周口市| 怀化市| 垫江县| 抚松县| 渝北区| 云梦县| 茌平县| 手游| 临邑县| 泰兴市| 嘉峪关市| 太白县| 伊宁市| 普安县| 巫山县| 赫章县| 集安市| 莱阳市| 石首市| 桑植县| 永新县| 旬邑县| 衢州市| 长武县| 岐山县| 浦江县| 灵山县| 霍城县| 青浦区| 桦甸市| 内黄县| 永川市| 高安市|