欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

一、什么是 argparse?

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

? argparse 的優(yōu)點(diǎn):

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

二、基本用法

我們從一個(gè)簡(jiǎn)單的例子開始:

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

運(yùn)行:

python demo.py Alice --age 25

輸出:

你好, Alice!你今年 25 歲。

解析代碼說明:

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

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

1. 類型轉(zhuǎn)換

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

自動(dòng)將輸入轉(zhuǎn)換為整數(shù),如果輸入錯(cuò)誤會(huì)報(bào)錯(cuò)。

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" 才會(huì)通過驗(yàn)證。

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)用時(shí)傳入:

python demo.py input.txt

否則會(huì)報(bào)錯(cuò)。

可選參數(shù)

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

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

可以這樣傳入:

python demo.py -o result.txt

五、子命令支持(subparsers)

想實(shí)現(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} 個(gè) epoch")
elif args.command == "test":
    print(f"使用模型 {args.model} 進(jìn)行測(cè)試")

六、進(jìn)階技巧與使用建議

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

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

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

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

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

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

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

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

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

七、錯(cuò)誤處理與幫助信息

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

python demo.py --help

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

錯(cuò)誤參數(shù)會(huì)自動(dòng)提示:

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

你還可以自定義錯(cuò)誤處理邏輯:

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

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

一個(gè)用于圖像縮放的 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 腳本變成一個(gè)強(qiáng)大、優(yōu)雅、可維護(hù)的命令行工具。

? 推薦使用場(chǎng)景:

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

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

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

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

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

相關(guān)文章

  • Python 概率生成問題案例詳解

    Python 概率生成問題案例詳解

    這篇文章主要介紹了Python 概率生成問題案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Python基礎(chǔ)之with語句和上下文管理器詳解

    Python基礎(chǔ)之with語句和上下文管理器詳解

    這篇文章主要為大家詳細(xì)介紹了Python中with語句和上下文管理器的具體使用方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • python爬取51job中hr的郵箱

    python爬取51job中hr的郵箱

    這篇文章主要為大家詳細(xì)介紹了python爬取51job中hr的郵箱的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • python中numpy的矩陣、多維數(shù)組的用法

    python中numpy的矩陣、多維數(shù)組的用法

    本篇文章主要介紹了python中numpy的矩陣、多維數(shù)組的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(píng)(內(nèi)附使用方法)

    Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(píng)(內(nèi)附使用方法)

    Python是一種非常強(qiáng)大的腳本語言,可以用來實(shí)現(xiàn)各種復(fù)雜的應(yīng)用,其中之一就是文本轉(zhuǎn)語音,即把文字轉(zhuǎn)換成聲音來發(fā)出,下面這篇文章主要給大家介紹了關(guān)于Python語音合成之第三方庫gTTs/pyttsx3/speech橫評(píng)的相關(guān)資料,文中還介紹了詳細(xì)的使用方法,需要的朋友可以參考下
    2023-05-05
  • Python實(shí)現(xiàn)批量提取Excel數(shù)據(jù)

    Python實(shí)現(xiàn)批量提取Excel數(shù)據(jù)

    在數(shù)據(jù)處理和分析的過程中,Excel 是一種廣泛使用的數(shù)據(jù)存儲(chǔ)格式,本文將詳細(xì)介紹如何使用 pandas、openpyxl 和 xlrd 三種庫來批量提取 Excel 數(shù)據(jù),并提供相應(yīng)的示例代碼,需要的可以參考下
    2024-12-12
  • Python基礎(chǔ)知識(shí)之變量的詳解

    Python基礎(chǔ)知識(shí)之變量的詳解

    這篇文章主要介紹了Python基礎(chǔ)知識(shí)之變量的詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • python數(shù)據(jù)可視化Seaborn畫熱力圖

    python數(shù)據(jù)可視化Seaborn畫熱力圖

    這篇文章主要介紹了數(shù)據(jù)可視化Seaborn畫熱力圖,熱力圖的想法其實(shí)很簡(jiǎn)單,用顏色替換數(shù)字,下面我們來看看文章對(duì)操作過程的具體介紹吧,需要的小伙伴可以參考一下具體內(nèi)容,希望對(duì)你有所幫助
    2022-01-01
  • 全面介紹python中很常用的單元測(cè)試框架unitest

    全面介紹python中很常用的單元測(cè)試框架unitest

    這篇文章主要介紹了python中很常用的單元測(cè)試框架unitest的相關(guān)資料,幫助大家更好的利用python進(jìn)行單元測(cè)試,感興趣的朋友可以了解下
    2020-12-12
  • 詳細(xì)介紹Python語言中的按位運(yùn)算符

    詳細(xì)介紹Python語言中的按位運(yùn)算符

    這篇文章主要介紹了Python語言中的按位運(yùn)算符,有需要的朋友可以參考一下
    2013-11-11

最新評(píng)論