Python腳本開發(fā)中的命令行參數(shù)及傳參示例詳解
sys模塊
在使用python開發(fā)腳本的時(shí)候,作為一個(gè)運(yùn)維工具,或者是其他工具需要在接受用戶參數(shù)運(yùn)行時(shí),這里就可以用到命令行傳參的方式,可以給使用者一個(gè)比較友好的交互體驗(yàn)。
python可以使用 sys 模塊中的 sys.argv 命令來(lái)獲取命令行參數(shù),其中返回的參數(shù)是一個(gè)列表
在實(shí)際開發(fā)中,我們一般都使用命令行來(lái)執(zhí)行 python 腳本
使用終端執(zhí)行python文件的命令:python 指定文件名
import sys # 使用 sys.argv 來(lái)獲取命令行參數(shù) # 在終端使用 python 指定python文件名 來(lái)執(zhí)行python文件 print('命令行參數(shù)的個(gè)數(shù)%s' % len(sys.argv)) # 命令行參數(shù)的個(gè)數(shù)1 print('命令行參數(shù)%s' % sys.argv) # 命令行參數(shù)['index.py'] # 因?yàn)榇藭r(shí)只有一個(gè)參數(shù),那么就是這個(gè)python文件 # 終端執(zhí)行的命令為:python index.py
argv返回命令行參數(shù)的一個(gè)列表,其中第一個(gè)元素是 py的文件名。如果不想獲取到文件名,那么完全可是使用切片的方式,因?yàn)槊钚蟹祷氐慕Y(jié)果是一個(gè)列表,完全可以使用切片的方式。
import sys # 使用切片的方式去除文件名 print('命令行參數(shù)%s' % sys.argv[1:]) # 命令行參數(shù)['1', '2', '3', '4', '5'] # 終端執(zhí)行的命令為:python index.py 1 2 3 4 5 # 在終端一次輸入多個(gè)參數(shù)的時(shí)候,中間不需要使用逗號(hào)隔開
sys.argv 只提供了比較簡(jiǎn)單的命令行參數(shù)獲取方式,并沒(méi)有提供命令行提示。無(wú)法做到像liunx命令行一樣,可以給使用者提供help幫助。
argparse模塊
概念:
argparse模塊可以輕松的編寫用戶友好的命行界面。該程序定義了他需要的參數(shù),argparse并將找出如何解析這些參數(shù) sys.argv。
該argparse模塊還會(huì)自動(dòng)生成幫助和用法消息,并在用戶給出的程序無(wú)效參數(shù)時(shí)發(fā)生異常。
Python中的正則表達(dá)式
正則表達(dá)式簡(jiǎn)介
- 正則表達(dá)式(Regular Exception),又稱規(guī)則表達(dá)式。正則表達(dá)式通常用來(lái)檢索、替換那些符合某個(gè)模式(規(guī)則)的文本。
- 不論是何種語(yǔ)言,都離不開正則表達(dá)式,大多數(shù)軟件都會(huì)使用到正則表達(dá)式。
- 在 python 中使用正則表達(dá)式只需要引入一個(gè) Re模塊。
注意:先有的正則表達(dá)式,后有的 Re 模塊。
Re模塊
我們使用re模塊來(lái)掌握正則表達(dá)式的常用匹配規(guī)則
re.match方法
re.match嘗試從字符串的起始位置匹配一個(gè)規(guī)則,匹配成功就返回match對(duì)象,否則返回None。可以使用group()獲取匹配成功的字符串。
語(yǔ)法: re.match(pattern,string,flag=0)
參數(shù)說(shuō)明:
- pattern : 匹配的正則表達(dá)式
- string : 要匹配的字符串
- flags : 標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。
注意:這個(gè)模塊是從起始位置進(jìn)行匹配的,否則會(huì)報(bào)錯(cuò)。
以下示例是沒(méi)有標(biāo)志位的調(diào)用 match 函數(shù)
# 測(cè)試 re 模塊中關(guān)于正則表達(dá)式的方法 import re saying: str = 'life is short, i use Python' # 使用 re.match 方法獲取匹配成功的字符串 res1 = re.match('L', saying) # res1等于None,match只能匹配以 xxx 開頭的子字符串,因?yàn)閟aying是以小寫字母l開頭的 # 所以匹配失敗。 res2 = re.match('l', saying) print(res2.group()) # l,匹配成功 res3 = re.match('li', saying) print(res3.group()) # li
flags可選的標(biāo)志位
- 如果同時(shí)存在多個(gè)標(biāo)志位使用 | 分隔,比如re.L | re.M
# 測(cè)試 re 模塊中關(guān)于正則表達(dá)式的方法 import re saying: str = 'life is short, i use Python' # 使用 re.match 方法獲取匹配成功的字符串,給定標(biāo)志位(忽略大小寫) res = re.match('L', saying, re.I) print(res.group()) # l
常用的匹配規(guī)則
以上就是Python腳本開發(fā)中的命令行參數(shù)及傳參示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python命令行參數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
用Python實(shí)現(xiàn)數(shù)據(jù)的透視表的方法
今天小編就為大家分享一篇用Python實(shí)現(xiàn)數(shù)據(jù)的透視表的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-11-11sklearn的predict_proba使用說(shuō)明
這篇文章主要介紹了sklearn的predict_proba使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python文件簡(jiǎn)單操作及openpyxl操作excel文件詳解
這篇文章主要為大家詳細(xì)介紹了python對(duì)文件的簡(jiǎn)單使用及openpyxl操作excel文件的方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-10-10python之當(dāng)你發(fā)現(xiàn)QTimer不能用時(shí)的解決方法
今天小編就為大家分享一篇python之當(dāng)你發(fā)現(xiàn)QTimer不能用時(shí)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Linux環(huán)境下MySQL-python安裝過(guò)程分享
這篇文章主要介紹了Linux環(huán)境下MySQL-python安裝過(guò)程分享,本文使用的編譯方式安裝,需要的朋友可以參考下2015-02-02Python 中的 global 標(biāo)識(shí)對(duì)變量作用域的影響
global 標(biāo)識(shí)用于在函數(shù)內(nèi)部,修改全局變量的值。這篇文章主要介紹了Python 的 global 標(biāo)識(shí)對(duì)變量作用域的影響,需要的朋友可以參考下2019-08-08基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索
今天小編就為大家分享一篇基于Python數(shù)據(jù)結(jié)構(gòu)之遞歸與回溯搜索,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02基于Numba提高python運(yùn)行效率過(guò)程解析
這篇文章主要介紹了基于Numba提高python運(yùn)行效率過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03