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

Python實(shí)現(xiàn)解析命令行參數(shù)的常見方法總結(jié)

 更新時間:2022年10月23日 10:44:26   作者:玩轉(zhuǎn)測試開發(fā)  
除ide的執(zhí)行方式外,命令行的方式執(zhí)行Python腳本是參數(shù)化程序執(zhí)行的一種常見且簡單的方法。本文總結(jié)了三個常見的獲取和解析命令行參數(shù)的方法,需要的可以參考一下

簡介

除ide的執(zhí)行方式外,命令行的方式執(zhí)行Python腳本是參數(shù)化程序執(zhí)行的一種常見且簡單的方法,正確處理命令行參數(shù),可以提供給包含某種參數(shù)化信息的程序或腳本的參數(shù)。例如處理目錄或者文件通常作為命令行參數(shù)傳遞給腳本,用于使程序可以處理不同圖片或者不同類型文件。

基本形式

python main.py -a v1 -b v2 ...

3種常見的獲取和解析命令行參數(shù)的方法

1、sys.argv

2、getopt

3、argparse

sys.argv案例

1、sys.argv返回一個列表,第一個值為腳本名稱,列表的值類型為string。

2、參數(shù)數(shù)量:len(sys.argv)

3、獲取全部參數(shù):sys.argv

案例源碼1

# -*- coding: utf-8 -*-
# time: 2022/9/1 0:10
# file: args_demo.py
# 公眾號: 玩轉(zhuǎn)測試開發(fā)
import sys


def f1():
    print(f"正在運(yùn)行的腳本名稱: {sys.argv[0]}")
    print(f"腳本的參數(shù)數(shù)量: {len(sys.argv)}")
    print(f"腳本的參數(shù): {sys.argv}")


if __name__ == '__main__':
    f1()

執(zhí)行結(jié)果:

getopt案例:getopt 模塊是專門處理命令行參數(shù)的模塊,用于獲取命令行選項(xiàng)和參數(shù)。命令行選項(xiàng)使得程序的參數(shù)更加靈活,其支持短選項(xiàng)模式(-)和雙-選項(xiàng)模式(--)。該模塊提供了兩個方法及一個異常處理來解析命令行參數(shù)。

語法格式:

getopt.getopt(args, options[, long_options])

參數(shù)說明:

args:要解析的命令行參數(shù)列表,一般是sys.argv[1:],需要過濾掉腳本名(sys.argv[0])

options:以字符串的格式定義,options 后的冒號 “:” ,表示如果設(shè)置該選項(xiàng),必須有附加的參數(shù),否則就不附加參數(shù)

long_options:以列表的格式定義,long_options 后的等號 “=” ,表示該選項(xiàng)必須有附加的參數(shù),不帶冒號表示該選項(xiàng)不附加參數(shù)

案例源碼2

# -*- coding: utf-8 -*-
# time: 2022/9/1 0:10
# file: args_demo.py
# 公眾號: 玩轉(zhuǎn)測試開發(fā)
import sys
import getopt


def f1():
    print(f"正在運(yùn)行的腳本名稱: {sys.argv[0]}")
    print(f"腳本的參數(shù)數(shù)量: {len(sys.argv)}")
    print(f"腳本的參數(shù): {sys.argv}")


def f2(argv):
    input_file = ""
    output_file = ""
    opts, args = getopt.getopt(argv[1:], "hi:o:", ["help", "input_file=", "output_file="])

    # "hi:o:": 短格式分析串, h 后面沒有冒號, 表示后面不帶參數(shù); i 和 o 后面帶有冒號, 表示后面帶參數(shù)
    # ["help", "input_file=", "output_file="]: 長格式分析串列表, help后面沒有等號, 表示后面不帶參數(shù); input_file和output_file后面帶冒號, 表示后面帶參數(shù)
    # 返回值包括 `opts` 和 `args`, opts 是以元組為元素的列表, 每個元組的形式為: (選項(xiàng), 附加參數(shù)),如: ('-i', 'test.png');
    # args是個列表,其中的元素是那些不含'-'或'--'的參數(shù)

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            # 即:處理 -h參數(shù)的案例說明,幫助文檔等
            print('args_demo.py -i <input_file> -o <output_file>')
            print('or: args_demo.py --input_file=<input_file> --output_file=<output_file>')
            sys.exit()
        elif opt in ("-i", "--input_file"):
            input_file = arg
        elif opt in ("-o", "--output_file"):
            output_file = arg
    print(f'輸入文件為:{input_file}')
    print(f'輸出文件為:{output_file}')

    # 打印不含'-'或'--'的參數(shù)
    for i in range(0, len(args)):
        print(f'不含 - 或 -- 的參數(shù) {i + 1} 為:{args[i]}')


if __name__ == '__main__':
    # f1()
    f2(sys.argv)

命令行依次執(zhí)行:

python args_demo.py -h
python args_demo.py -i a.txt
python args_demo.py -o b.txt
python args_demo.py -i a.txt  -o b.txt c.txt

執(zhí)行結(jié)果:

Exception getopt.GetoptError:在參數(shù)列表中沒有找到所傳遞參數(shù),或選項(xiàng)的需要的參數(shù)為空時會觸發(fā)該異常。異常的參數(shù)是一個字符串,表示錯誤的原因。屬性 msg 和 opt 為相關(guān)選項(xiàng)的錯誤信息。在上述代碼中添加異常處理,檢查此錯誤信息。

使用錯誤的格式選項(xiàng)傳遞參數(shù)執(zhí)行腳本:python args_demo.py -q

argparse案例:當(dāng)程序中使用采用復(fù)雜參數(shù)或多個文件名時,推薦使用 Python 的 argparse 庫,它以系統(tǒng)的方式處理命令行參數(shù),從而可以編寫用戶友好的命令行程序。Python 標(biāo)準(zhǔn)庫 argparse 同樣也是用于解析命令行參數(shù)的模塊。首先,由程序確定所需的參數(shù),然后 argparse 將這些參數(shù)解析為 sys.argv。此外,argparse 會生成幫助和使用信息提示,并在提供無效參數(shù)時發(fā)出錯誤。為了介紹此模塊,編寫 argparse_demo1.py,如下所示:

為了介紹此模塊,編寫 argparse_demo1.py,如下所示:

案例1

不帶參數(shù)運(yùn)行此腳本不會向 stdout 顯示任何內(nèi)容。但是,如果使用 --help 或 -h 選項(xiàng),將得到腳本的使用信息提示

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

執(zhí)行結(jié)果:

(venv)>python argparse_demo.py -h
usage: argparse_demo.py [-h]

optional arguments:
  -h, --help  show this help message and exit

(venv)>python argparse_demo.py --help
usage: argparse_demo.py [-h]

optional arguments:
  -h, --help  show this help message and exit

案例2

指定其他參數(shù)會導(dǎo)致錯誤python argparse_demo.py -q

python argparse_demo.py -q
usage: argparse_demo.py [-h]
argparse_demo.py: error: unrecognized arguments: -q

案例3

添加一個參數(shù)需要調(diào)用方法 parser.add_argument

# -*- coding: utf-8 -*-
# time: 2022/8/31 16:20
# file: argparse_demo1.py
# author: tom
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("name", help="添加的第1個參數(shù)name,姓名。")
args = parser.parse_args()
print(f"args.name:{args.name}")
print(f"type:{type(args.name)}")

使用范例:

python argparse_demo1.py tom
python argparse_demo1.py -h
python argparse_demo1.py

執(zhí)行結(jié)果:此時不帶參數(shù)運(yùn)行腳本則拋出缺少參數(shù)name

(venv) >python argparse_demo.py tom
args.name:tom
type:<class 'str'>

(venv) >python argparse_demo.py -h
usage: argparse_demo.py [-h] name

positional arguments:
  name        添加的第1個參數(shù)name,姓名。

optional arguments:
  -h, --help  show this help message and exit

(venv) >python argparse_demo.py
usage: argparse_demo.py [-h] name
argparse_demo.py: error: the following arguments are required: name

使用--的形式:使用-的形式則--name改成 -name即可。

案例4

argparse 將提供的選項(xiàng)默認(rèn)視為字符串,新增int類型的案例

# -*- coding: utf-8 -*-
# time: 2022/8/31 16:20
# file: argparse_demo1.py
# author: tom
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--name", help="添加的第1個參數(shù)name,姓名。")
parser.add_argument("--age", help="添加的第2個參數(shù)age,年齡。", type=int)
args = parser.parse_args()
print(f"args.name:{args.name}")
print(f"type:{type(args.name)}")

print("*" * 50)

print(f"args.age:{args.age}")
print(f"type:{type(args.age)}")

使用范例:可使用兩種形式 --key=value  /  --key value

python argparse_demo.py --name=tom --age=30
python argparse_demo.py --name tom --age 30

執(zhí)行結(jié)果:

(venv) >python argparse_demo.py --name=tom --age=30
args.name:tom
type:<class 'str'>
**************************************************
args.age:30
type:<class 'int'>

(venv) >python argparse_demo.py --name tom --age 30
args.name:tom
type:<class 'str'>
**************************************************
args.age:30
type:<class 'int'>

到此這篇關(guān)于Python實(shí)現(xiàn)解析命令行參數(shù)的常見方法總結(jié)的文章就介紹到這了,更多相關(guān)Python解析命令行參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Flask和pyecharts實(shí)現(xiàn)動態(tài)數(shù)據(jù)可視化

    Flask和pyecharts實(shí)現(xiàn)動態(tài)數(shù)據(jù)可視化

    這篇文章主要介紹了Flask和pyecharts實(shí)現(xiàn)動態(tài)數(shù)據(jù)可視化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 淺談python下tiff圖像的讀取和保存方法

    淺談python下tiff圖像的讀取和保存方法

    今天小編就為大家分享一篇淺談python下tiff圖像的讀取和保存方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Pandas DataFrame操作數(shù)據(jù)增刪查改

    Pandas DataFrame操作數(shù)據(jù)增刪查改

    我們在用 pandas 處理數(shù)據(jù)的時候,經(jīng)常會遇到用其中一列數(shù)據(jù)替換另一列數(shù)據(jù)的場景。這一類的需求估計很多人都遇到,當(dāng)然還有其它更復(fù)雜的。解決這類需求的辦法有很多,這里我們來推薦幾個,這篇文章主要介紹了Pandas DataFrame操作數(shù)據(jù)的增刪查改
    2022-10-10
  • Python Numpy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差詳解

    Python Numpy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差詳解

    NumPy(Numerical Python)是Python的一種開源的數(shù)值計算擴(kuò)展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多。本文主要介紹用NumPy實(shí)現(xiàn)計算矩陣的均值和標(biāo)準(zhǔn)差,感興趣的小伙伴可以了解一下
    2021-11-11
  • 輕松實(shí)現(xiàn)TensorFlow微信跳一跳的AI

    輕松實(shí)現(xiàn)TensorFlow微信跳一跳的AI

    這篇文章主要教大家如何輕松實(shí)現(xiàn)TensorFlow微信跳一跳的AI,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • python正則表達(dá)式match和search用法實(shí)例

    python正則表達(dá)式match和search用法實(shí)例

    這篇文章主要介紹了python正則表達(dá)式match和search用法,實(shí)例分析了正則表達(dá)式中match和search的功能、定義及相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python 常用的安裝Module方式匯總

    Python 常用的安裝Module方式匯總

    這篇文章主要介紹了Python 常用的安裝Module方式匯總,需要的朋友可以參考下
    2017-05-05
  • Python教程之生產(chǎn)者消費(fèi)者模式解析

    Python教程之生產(chǎn)者消費(fèi)者模式解析

    在并發(fā)編程中使用生產(chǎn)者和消費(fèi)者模式能夠解決大不多的并發(fā)問題。該模式通過平衡生產(chǎn)線程和消費(fèi)線程的工作能力來提高程序的整體處理數(shù)據(jù)的速度
    2021-09-09
  • Django接收照片儲存文件的實(shí)例代碼

    Django接收照片儲存文件的實(shí)例代碼

    這篇文章主要介紹了Django接收照片儲存文件的實(shí)例代碼 ,代碼簡單易懂,非常不錯,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python字符串str和json格式相互轉(zhuǎn)換

    Python字符串str和json格式相互轉(zhuǎn)換

    這篇文章主要介紹了Python字符串str和json格式相互轉(zhuǎn)換,str轉(zhuǎn)換為json格式,前提一定需要保證這個str的格式和json是一致的。下文小編向大家介紹更多相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-03-03

最新評論

车险| 铜川市| 商都县| 高台县| 定兴县| 开封县| 芦山县| 青河县| 扎兰屯市| 民权县| 拉孜县| 葫芦岛市| 息烽县| 乌兰县| 石楼县| 太仓市| 南平市| 鹤岗市| 芜湖县| 东莞市| 南城县| 友谊县| 阿拉善盟| 定兴县| 达日县| 湄潭县| 东至县| 霸州市| 额济纳旗| 曲周县| 勐海县| 奉新县| 东丽区| 柳江县| 东安县| 沁源县| 三亚市| 中阳县| 平江县| 澜沧| 咸宁市|