首頁 > 軟體

Python指令碼開發中的命令列引數及傳參範例詳解

2022-07-28 22:04:09

sys模組

在使用python開發指令碼的時候,作為一個運維工具,或者是其他工具需要在接受使用者引數執行時,這裡就可以用到命令列傳參的方式,可以給使用者一個比較友好的互動體驗。

python可以使用 sys 模組中的 sys.argv 命令來獲取命令列引數,其中返回的引數是一個列表

在實際開發中,我們一般都使用命令列來執行 python 指令碼

使用終端執行python檔案的命令:python 指定檔名

import sys
# 使用 sys.argv 來獲取命令列引數
# 在終端使用 python 指定python檔名 來執行python檔案
print('命令列引數的個數%s' % len(sys.argv))
# 命令列引數的個數1
print('命令列引數%s' % sys.argv)
# 命令列引數['index.py']
# 因為此時只有一個引數,那麼就是這個python檔案
# 終端執行的命令為:python index.py

argv返回命令列引數的一個列表,其中第一個元素是 py的檔名。如果不想獲取到檔名,那麼完全可是使用切片的方式,因為命令列返回的結果是一個列表,完全可以使用切片的方式。

import sys
# 使用切片的方式去除檔名
print('命令列引數%s' % sys.argv[1:])
# 命令列引數['1', '2', '3', '4', '5']
# 終端執行的命令為:python index.py 1 2 3 4 5
# 在終端一次輸入多個引數的時候,中間不需要使用逗號隔開

sys.argv 只提供了比較簡單的命令列引數獲取方式,並沒有提供命令列提示。無法做到像liunx命令列一樣,可以給使用者提供help幫助。

argparse模組

概念:

argparse模組可以輕鬆的編寫使用者友好的命行介面。該程式定義了他需要的引數,argparse並將找出如何解析這些引數 sys.argv。

該argparse模組還會自動生成幫助和用法訊息,並在使用者給出的程式無效引數時發生異常。

Python中的正規表示式

 正規表示式簡介

  • 正規表示式(Regular Exception),又稱規則表示式。正規表示式通常用來檢索、替換那些符合某個模式(規則)的文字。
  • 不論是何種語言,都離不開正規表示式,大多數軟體都會使用到正規表示式。
  • 在 python 中使用正規表示式只需要引入一個 Re模組。

注意:先有的正規表示式,後有的 Re 模組。

Re模組

我們使用re模組來掌握正規表示式的常用匹配規則

re.match方法

re.match嘗試從字串的起始位置匹配一個規則,匹配成功就返回match物件,否則返回None。可以使用group()獲取匹配成功的字串。

語法: re.match(pattern,string,flag=0)

引數說明:

  • pattern : 匹配的正規表示式
  • string : 要匹配的字串
  • flags : 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

注意:這個模組是從起始位置進行匹配的,否則會報錯。

以下範例是沒有標誌位的呼叫 match 函數

# 測試 re 模組中關於正規表示式的方法
import re
saying: str = 'life is short, i use Python'
# 使用 re.match 方法獲取匹配成功的字串
res1 = re.match('L', saying)
# res1等於None,match只能匹配以 xxx 開頭的子字串,因為saying是以小寫字母l開頭的
# 所以匹配失敗。
res2 = re.match('l', saying)
print(res2.group())
# l,匹配成功
res3 = re.match('li', saying)
print(res3.group())
# li

flags可選的標誌位

  • 如果同時存在多個標誌位使用 | 分隔,比如re.L | re.M
# 測試 re 模組中關於正規表示式的方法
import re
saying: str = 'life is short, i use Python'
# 使用 re.match 方法獲取匹配成功的字串,給定標誌位(忽略大小寫)
res = re.match('L', saying, re.I)
print(res.group())
# l

常用的匹配規則

以上就是Python指令碼開發中的命令列引數及傳參範例詳解的詳細內容,更多關於Python命令列引數的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com