功能描述: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模塊支持的通配符:
import glob
listglob = []
listglob = glob.glob(r"/home/xxx/picture/*.png")
listglob.sort()
print listglob
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0?.png")
listglob.sort()
print listglob
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0[0,1,2].png")
listglob.sort()
print listglob
print '--------------------'
listglob = glob.glob(r"/home/xxx/picture/0[0-3].png")
listglob.sort()
print listglob
print '--------------------'
listglob = glob.iglob(r"/home/xxx/picture/0[a-z].png")
print listglob
for item in listglob:
print item
import glob,os
path="F:\\CodeFile\\my_directory"
l=[]
l=glob.glob(os.path.join(path,"*.txt"))
for i in l:
print(i)
輸出:
F:\CodeFile\my_directory\file3 - 副本 (2).txt
F:\CodeFile\my_directory\file3 - 副本 (3).txt
F:\CodeFile\my_directory\file3 - 副本 (4).txt
F:\CodeFile\my_directory\file3 - 副本.txt
F:\CodeFile\my_directory\file3.txt