Python模組學習 glob模組

2021-07-16 22:24:28 字數 1550 閱讀 4001

功能描述:glob模組可以使用unix shell風格的萬用字元匹配符合特定格式的檔案和資料夾,跟windows的檔案搜尋功能差不多。glob模組並非呼叫乙個子shell實現搜尋功能,而是在內部呼叫了os.listdir()和fnmatch.fnmatch()。

glob模組共包含以下3個函式:

glob(pathname, recursive=false)

第乙個引數pathname為需要匹配的字串。(該引數應盡量加上r字首,以免發生不必要的錯誤

第二個引數代表遞迴呼叫,與特殊萬用字元「**」一同使用,預設為false。

該函式返回乙個符合條件的路徑的字串列表,如果使用的是windows系統,路徑上的「\」符號會自動加上轉義符號變為「\\」(方便使用)。

在3.5版本之後,glob函式支援乙個特殊的萬用字元「**」,該萬用字元可以匹配指定路徑裡所有檔案和目錄,包括子目錄裡的所有檔案和目錄。相當於遞迴地呼叫了這個函式。使用這個萬用字元必須加上recursive=true引數。

在有複雜目錄結構的情況下使用該萬用字元可能會導致效能下降,拖累整個程式的執行,需謹慎使用!

iglob(pathname, recursive=false)

引數與glob()一致。

返回乙個迭代器,該迭代器不會同時儲存所有匹配到的路徑,遍歷該迭代器的結果與使用相同引數呼叫glob()的返回結果一致。

escape(pathname)

這個函式是在3.4版本之後才有的,功能是忽略所有萬用字元。(可以用於測試某檔案是否存在)

3.5.1版本該函式不能正常執行,公升級到3.5.2之後恢復正常

需要注意的地方:

glob預設不匹配以點符號(.)開始的檔案,如果有這類檔案,則需要做特殊處理。

假如當前資料夾包含test.txt和.test.txt兩個檔案。

>>> 

import glob

>>> glob.glob('*.txt')

['test.txt']

>>> glob.glob('.*.txt')

['.test.txt']

glob模組支援的萬用字元:

萬用字元功能*

匹配0或多個字元

**匹配所有檔案、目錄、子目錄和子目錄裡的檔案(3.5版本新增)

?匹配1個字元,與正規表示式裡的?不同

[exp]

匹配指定範圍內的字元,如:[1-9]匹配1至9範圍內的字元

[!exp]

匹配不在指定範圍內的字元

總結:雖然glob模組可以很輕鬆地匹配特定檔案和資料夾,但是僅僅支援少量的萬用字元,沒辦法像正規表示式一樣匹配更複雜的字串。使用的時候應當認真考慮使用場景,根據需求針對性地選擇解決方案。

感謝內容提供者

python模組學習之glob模組

功能描述 glob模組可以使用unix shell風格的萬用字元匹配符合特定格式的檔案和資料夾,跟windows的檔案搜尋功能差不多。glob模組並非呼叫乙個子shell實現搜尋功能,而是在內部呼叫了os.listdir 和fnmatch.fnmatch 檢視我之前寫的fnmatch。glob模組共...

python模組學習 glob 檔案路徑查詢

1 glob模組是最簡單的模組之一,內容非常少。用它可以查詢符合特定規則的檔案路徑名。跟使用windows下的檔案搜尋差不多。查詢檔案只用到三個匹配符 匹配0個或多個字元 匹配單個字元 匹配指定範圍內的字元,如 0 9 匹配數字。glob.glob pathname 返回所有匹配的檔案路徑列表。它只...

Python模組學習 glob 檔案路徑查詢

glob模組是最簡單的模組之一,內容非常少。用它可以查詢符合特定規則的檔案路徑名。跟使用windows下的檔案搜尋差不多。查詢檔案只用到三個匹配符 匹配0個或多個字元 匹配單個字元 匹配指定範圍內的字元,如 0 9 匹配數字。返回所有匹配的檔案路徑列表。它只有乙個引數pathname,定義了檔案路徑...