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

深入解析 Python 的 argparse命令行參數(shù)的實戰(zhàn)案例

 更新時間:2025年08月08日 10:38:22   作者:蕭鼎  
argparse是開發(fā)Python命令行工具不可或缺的標(biāo)準(zhǔn)模塊,它功能全面、文檔豐富、學(xué)習(xí)曲線平緩,只要掌握了它,你就可以輕松將任何 Python 腳本變成一個強大、優(yōu)雅、可維護的命令行工具,本文帶領(lǐng)深入解析Python的argparse命令行參數(shù),需要的朋友跟隨小編一起看看吧

在日常的 Python 開發(fā)中,我們常常希望腳本能夠像命令行工具一樣運行,能夠接受不同的參數(shù)或選項,靈活控制程序行為。Python 的標(biāo)準(zhǔn)庫 argparse 就為我們提供了一個強大、靈活且易用的命令行參數(shù)解析工具。

本文將帶你系統(tǒng)了解 argparse 的核心功能、常用模式、進階用法,以及開發(fā)命令行工具的最佳實踐。

一、什么是 argparse?

argparse 是 Python 標(biāo)準(zhǔn)庫中用于處理命令行參數(shù)的模塊。它允許我們通過命令行傳遞參數(shù)和選項,并在腳本中方便地進行解析和處理。相較于 sys.argv 的手動解析,argparse 提供了更加結(jié)構(gòu)化、用戶友好和可維護的方式。

? argparse 的優(yōu)點:

  • 支持位置參數(shù)和可選參數(shù);
  • 自動生成 --help 幫助信息;
  • 類型檢查和自動轉(zhuǎn)換;
  • 多個子命令支持(如 git commitgit push);
  • 良好的錯誤提示機制。

二、基本用法

我們從一個簡單的例子開始:

import argparse
parser = argparse.ArgumentParser(description="這是一個演示腳本")
parser.add_argument("name", help="你的名字")
parser.add_argument("--age", type=int, help="你的年齡", default=18)
args = parser.parse_args()
print(f"你好, {args.name}!你今年 {args.age} 歲。")

運行:

python demo.py Alice --age 25

輸出:

你好, Alice!你今年 25 歲。

解析代碼說明:

  • ArgumentParser():創(chuàng)建參數(shù)解析器。
  • add_argument():添加一個參數(shù),第一個是參數(shù)名,-- 開頭的是“可選參數(shù)”,否則為“位置參數(shù)”。
  • parse_args():從命令行獲取參數(shù)并解析為對象。
  • args.name / args.age:通過屬性訪問解析結(jié)果。

三、常用參數(shù)詳解

1. 類型轉(zhuǎn)換

parser.add_argument("--count", type=int)

自動將輸入轉(zhuǎn)換為整數(shù),如果輸入錯誤會報錯。

2. 設(shè)置默認(rèn)值

parser.add_argument("--city", default="Shanghai")

如果不傳 --city,默認(rèn)值為 "Shanghai"

3. 布爾開關(guān)參數(shù)(action)

parser.add_argument("--verbose", action="store_true")

使用方式:

python demo.py --verbose

args.verbose == True,否則為 False。

4. 選擇參數(shù)(choices)

parser.add_argument("--mode", choices=["train", "test", "eval"])

只有傳入 "train"、"test""eval" 才會通過驗證。

5. 多值參數(shù)(nargs)

parser.add_argument("--nums", nargs='+', type=int)

支持:

python demo.py --nums 1 2 3 4

結(jié)果:args.nums = [1, 2, 3, 4]

四、位置參數(shù)與可選參數(shù)

位置參數(shù)

位置參數(shù)必須按順序輸入,例如:

parser.add_argument("filename")

則必須調(diào)用時傳入:

python demo.py input.txt

否則會報錯。

可選參數(shù)

使用 --- 開頭的是可選參數(shù),如:

parser.add_argument("-o", "--output")

可以這樣傳入:

python demo.py -o result.txt

五、子命令支持(subparsers)

想實現(xiàn)類似 Git 命令那樣的子命令結(jié)構(gòu):

python tool.py train --epochs 10
python tool.py test --model model.pth

可以使用 subparsers

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest="command")
# 子命令 train
train_parser = subparsers.add_parser("train")
train_parser.add_argument("--epochs", type=int)
# 子命令 test
test_parser = subparsers.add_parser("test")
test_parser.add_argument("--model")
args = parser.parse_args()
if args.command == "train":
    print(f"開始訓(xùn)練,共 {args.epochs} 個 epoch")
elif args.command == "test":
    print(f"使用模型 {args.model} 進行測試")

六、進階技巧與使用建議

1. 添加參數(shù)分組(group)

group = parser.add_argument_group("訓(xùn)練參數(shù)")
group.add_argument("--batch_size", type=int)

這在幫助信息中會將參數(shù)分組顯示,提高可讀性。

2. 使用metavar優(yōu)化幫助提示

parser.add_argument("--output", metavar="FILE", help="輸出文件路徑")

metavar 會在 help 中顯示為 --output FILE,更清晰。

3. 打印默認(rèn)值A(chǔ)rgumentDefaultsHelpFormatter

parser = argparse.ArgumentParser(
    description="示例",
    formatter_class=argparse.ArgumentDefaultsHelpFormatter
)

這樣在 --help 中會顯示每個參數(shù)的默認(rèn)值。

七、錯誤處理與幫助信息

默認(rèn)情況下,argparse 自動生成:

python demo.py --help

會打印出所有參數(shù)說明和用法。

錯誤參數(shù)會自動提示:

error: argument --age: invalid int value: 'abc'

你還可以自定義錯誤處理邏輯:

try:
    args = parser.parse_args()
except SystemExit:
    print("請檢查命令行參數(shù)是否正確")

八、實戰(zhàn)案例:批量圖像處理工具

一個用于圖像縮放的 CLI 工具:

import argparse
from PIL import Image
import os
parser = argparse.ArgumentParser(description="批量圖像縮放工具")
parser.add_argument("input_dir", help="輸入文件夾路徑")
parser.add_argument("output_dir", help="輸出文件夾路徑")
parser.add_argument("--scale", type=float, default=0.5, help="縮放比例")
args = parser.parse_args()
if not os.path.exists(args.output_dir):
    os.makedirs(args.output_dir)
for file in os.listdir(args.input_dir):
    if file.lower().endswith((".png", ".jpg", ".jpeg")):
        img = Image.open(os.path.join(args.input_dir, file))
        new_size = (int(img.width * args.scale), int(img.height * args.scale))
        resized_img = img.resize(new_size)
        resized_img.save(os.path.join(args.output_dir, file))
print("處理完成!")

使用方式:

python resize.py ./input ./output --scale 0.8

九、總結(jié)

argparse 是開發(fā) Python 命令行工具不可或缺的標(biāo)準(zhǔn)模塊,它功能全面、文檔豐富、學(xué)習(xí)曲線平緩。只要掌握了它,你就可以輕松將任何 Python 腳本變成一個強大、優(yōu)雅、可維護的命令行工具。

? 推薦使用場景:

  • 數(shù)據(jù)處理腳本(如預(yù)處理、數(shù)據(jù)清洗);
  • 模型訓(xùn)練與測試命令行工具;
  • 自動化腳本;
  • 簡易服務(wù)器或工具 CLI。

?? 附:常用參數(shù)速查表

參數(shù)選項說明
type參數(shù)類型轉(zhuǎn)換(如 int
default默認(rèn)值
help參數(shù)說明
choices限制輸入值范圍
action用于布爾值,如 store_true
nargs接收多個值,如 '+'
required是否必須(僅對可選參數(shù)有效)
metavar顯示的占位符名稱

如果你正在開發(fā)腳本或 CLI 工具,不妨試試 argparse,你會發(fā)現(xiàn)它不只是一個參數(shù)解析器,更是構(gòu)建優(yōu)雅命令行接口的基礎(chǔ)工具。

到此這篇關(guān)于深入解析 Python 的 argparse命令行參數(shù)的最佳實踐的文章就介紹到這了,更多相關(guān)Python argparse命令行參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 簡單示例入門了解WxPython教程

    簡單示例入門了解WxPython教程

    這篇文章主要通過演示簡單示例帶大家入門了解WxPython,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python使用sys.argv與argparse進行命令行參數(shù)處理

    Python使用sys.argv與argparse進行命令行參數(shù)處理

    在Python開發(fā)中,命令行參數(shù)處理是高頻需求, 小到快速編寫的測試腳本,大到生產(chǎn)級的命令行工具,都需要接收外部傳入的參數(shù)并解析,Python提供了多種處理命令行參數(shù)的方式,其中sys.argv和argparse是最常用的兩種,本文將結(jié)合實戰(zhàn)代碼,深度解析兩者的特點及區(qū)別
    2026-03-03
  • Python異常處理與反射相關(guān)問題總結(jié)

    Python異常處理與反射相關(guān)問題總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python異常處理與反射展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 深入分析python 排序

    深入分析python 排序

    這篇文章主要介紹了python 排序的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python排序的知識,感興趣的朋友可以了解下
    2020-08-08
  • Python設(shè)計模式之代理模式實例詳解

    Python設(shè)計模式之代理模式實例詳解

    這篇文章主要介紹了Python設(shè)計模式之代理模式,結(jié)合實例形式較為詳細(xì)的分析了代理模式的概念、原理及Python定義、使用代理模式相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • Python?標(biāo)準(zhǔn)庫?fileinput與文件迭代器

    Python?標(biāo)準(zhǔn)庫?fileinput與文件迭代器

    這篇文章主要介紹了Python標(biāo)準(zhǔn)庫fileinput與文件迭代器,fileinput模塊可以對一個或多個文件中的內(nèi)容進行迭代、遍歷等操作,更多詳細(xì)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • python字符串的多行輸出的實例詳解

    python字符串的多行輸出的實例詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python字符串的多行輸出的實例詳解內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下。
    2021-06-06
  • Python實現(xiàn)生成對角矩陣和對角塊矩陣

    Python實現(xiàn)生成對角矩陣和對角塊矩陣

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)生成對角矩陣和對角塊矩陣,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • python中pygame安裝過程(超級詳細(xì))

    python中pygame安裝過程(超級詳細(xì))

    這篇文章主要介紹了python中pygame安裝過程(超級詳細(xì)),非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • python實現(xiàn)截取屏幕保存文件,刪除N天前截圖的例子

    python實現(xiàn)截取屏幕保存文件,刪除N天前截圖的例子

    今天小編就為大家分享一篇python實現(xiàn)截取屏幕保存文件,刪除N天前截圖的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08

最新評論

临沧市| 洛浦县| 衡阳市| 平武县| 禄劝| 左权县| 太原市| 承德县| 林州市| 合作市| 栖霞市| 江门市| 九台市| 清水县| 凤台县| 江安县| 禹州市| 石柱| 临湘市| 格尔木市| 高邑县| 廉江市| 安陆市| 灌阳县| 高州市| 大丰市| 镶黄旗| 饶平县| 湘潭县| 乌审旗| 阿坝| 青海省| 广汉市| 新巴尔虎左旗| 淮滨县| 富川| 荆州市| 仲巴县| 尼勒克县| 年辖:市辖区| 隆化县|