日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中的命令行参数_python学习笔记6:命令行参数

發布時間:2023/12/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中的命令行参数_python学习笔记6:命令行参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 使用步驟

使用步驟如下:

# 導入模塊

import argparse

# 獲取parser, description文本會顯示在help信息中

parser = argparse.ArgumentParser(description='args discrip')

# 添加選項, 具體選項類型見后面各節

parser.add_argument('-a')

# 解析選項

args = parser.parse_args(sys.argv[1:])

# 使用選項

print(args.a)

對sys.argv[1:]的說明:

sys.argv # 一個列表,存儲命令行參數.

sys.argv[0] # 腳本名.

sys.argv[1:] # 命令行參數.

sys.argv[1][2:] # 截取第一個參數第2bit之后的內容;

2. 位置參數

# 位置參數可以實現類似于vcs a.v b.v的選項處理,

# 如下例, vfiles是位置參數,不需要使用'-vfile 或者-xx'這種形式指定選項內容;

# default=[] 表示默認參數為空list;

# nargs='*' 表示可以是0個或多個參數;

>>> parser.add_argument('vfiles', type=str,default=[], nargs='*')

_StoreAction(optine_strings=[], dest='vfiles', nargs='*', const=None, default=[], Type=, choices=None, help=None, metavar=None)

3. flag類型的選項(選項本身無參數)

flag類型選項本身無參數, 根據"命令行是否有該選項" 和 "該選項聲明值/默認值" 來決定選項實際值(注意, 并不是聲明選項, 則該選項為True, 不聲明為False, 而是內部可配置):

>>> parser.add_argument(

... '-a', # 選項名稱

... action='store_true', # 如果聲明-a, 則a=True;

... default=False # 如果不聲明-a, 則(默認)a=False;

... )

_StoreTrueAction(optine_strings=['-a'], dest='a', nargs=0, const=True, default=False, Type=None, choices=None, help=None, metavar=None)

>>>

>>> parser.add_argument(

... '-b',

... '--b_long_opt', # b有額外的長選項名稱: --b_long_opt

... action='store_false', # 如果聲明-b, 則b=False

... default=True, # 如果不聲明(默認)-b, 則b=True

... dest='b_new_name' # 內部使用b_new_name取用該選項(而不能使用b)

)

_StoreTrueAction(optine_strings=['-b', '--b_long_opt'], dest='b_new_name', nargs=0, const=False, default=True, Type=None, choices=None, help=None, metavar=None)

注意,不會有以下兩種情況,因為這兩種情況下,無論選項是否定義,內部得到的值都一樣,沒有意義;

>>> # action='store_true', default=True,聲明選項和默認值都是True

>>> # action='store_false', default=False,聲明選項和默認值都是False

通過parse一個內部數組來進行驗證,實際使用中是parse真正的命令行數組sys.argv[1:], 注意sys.argv[0]表示的是腳本名稱;

測試1:#-a -b都沒聲明,所以都是default值

>>> lst_args=[]

>>> args = parser.parse_args(lst_args)

>>> args.a # 未聲名-a,所以args.a的值為default值False;

False

>>> args.b_new_name # 未聲名-b,所以args.b_new_name值為默認值True;

True

>>> args.b # 由于使用了dest, 所以args.b會報錯, 只能使用args.b_new_name獲取

AttributeError: 'Namespace' object has no sttribute 'b'

測試2:-a -b都聲明,所以都是action store值

>>> lst_args=['-ab'] # -a和-b是短選項, 可以合并使用'-ab'表示'-a' '-b'

>>> args = parser.parse_args(lst_args)

>>> args.a # 聲名了-a,所以args.a的值為聲明值True;

True

>>> args.b_new_name # 聲名了-b,所以args.b_new_name值為聲明值False;

False

測試3:使用長選項,-a -b都聲明,所以都是store值

>>> lst_args=['-a', '--b_long_opt'] # --b_long_opt是長選項, 需要使用雙短線('--')進行聲明

>>> args = parser.parse_args(lst_args)

>>> args.a # 聲名了-a,所以args.a的值為聲明值True;

True

>>> args.b_new_name # 聲名了-b,所以args.b_new_name值為聲明值False;

False

4. 必選選項(選項必須聲明, 不聲明會報錯)

>>> parser.add_argument(

... '-c', # 選項名稱

... type=int, # 選項類型是整數

... required=True # 選項是必選選項

)

_StoreAction(optine_strings=['-c'], dest='c', nargs=None, const=None, default=None, Type=, choices=None, help=None, metavar=None)

>>>

>>> # 選項-c必須聲明,否則報錯:error:the following argument are required:-c

>>> lst_args=['-c', '3']

>>> args = parser.parse_args(lst_args)

>>>

>>> # 選項-c類型為int,所以str '3'傳到args.c時,會轉類型為int 3;

>>> print(args.c)

3

5. 可選選項,可帶默認值

-d 為str類型的可選選項,默認值為'default_d'

-d 為str類型的可選選項,默認值為'default_d'

>>> parser.add_argument(

... '-d', # 選項名

... type = str, # 選項類型

... required = False, # '-d'是可選選項

... default = 'default_d' # '-d'不聲明時, 默認值為'default_d'

)

_StoreTrueAction(optine_strings=['-d'], dest='d', nargs=None, const=None, default='default_d', Type=, choices=None, help=None, metavar=None)

>>>

>>> lst_args=['-c', '4', '-d', '5'] # -c 必選, -d 可選

>>> args = parser.parse_args(lst_args)

>>> args.c # 選項-c為必選,類型為int

4

>>> type(args.c)

>>>

>>> args.d # 選項-d為可選,類型為str

'5'

>>> type(args.d)

6. 長選項

>>> parser.add_argument(

... '--e_long_opt' , # 表示長選項

... type=str , #

... required=False , #

... default=[] , #

... nargs='+' , # 表示--e_long_opt這個選項后面可以有多個參數

)

_StoreTrueAction(optine_strings=['--e_long_opt'], dest='e_long_opt', nargs='+', const=None, default=[], Type=, choices=None, help=None, metavar=None)

>>>

>>> # --e_long_opt 帶了兩個參數 'opt_e0', 'opt_e1'

>>> lst_args=['-c', '4', '--e_long_opt', 'opt_e0', 'opt_e1']

>>>

>>> args = parser.parse_args(lst_args)

>>>

>>> # --e_long_opt的兩個參數組成一個list賦值給args.e_long_opt;

>>> args.e_long_opt

['opt_e0', 'opt_e1']

7. 列表選項

nargs='+' 表示當前選項可以有多個參數, 這些參數組成一個list, 例子見上一節.

8. 未知選項

如果sys.argv[1:]中出現了"位置選項123" 或 "命名選項–f 456",但"123" 或"-f"選項沒有定義在add_argument()中時,直接使用parser.parse_args()會報告錯誤:

error: unrecognized arguments: 123 –f 456;

這時需要使用parser.parse_known_args()這個方法(而不是parser.parse_args()這個方法)。

>>> lst_args = ['-a', '123', '-f', '456']

>>> parser.add_argument('-a', action='store_true',default=False)

>>>

>>> args, unknown_args = parser.parse_known_args(lst_args)

>>>

>>> args

Namespace(a=True)

>>> args.a # args得到的值與parser.parse_args()的返回值一致

True

>>>

>>> unknown_args # unknown_args得到的是處理完定義過的args后,剩下的選項;

['123', '-f', '456']

總結

以上是生活随笔為你收集整理的python中的命令行参数_python学习笔记6:命令行参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。