glob模塊
說明:
1、glob是python自己帶的一個文件操作相關模塊,用它可以查找符合自己目的的文件,就類似于Windows下的文件搜索,
支持通配符操作? * 、 ? 、 [] ?這三個通配符, * 代表0個或多個字符, ? 代表一個字符, [] 匹配指定范圍內的字符,如[0-9]匹配數字。
glob.glob("字符串+通配符")
該方法返回指定路徑所有匹配的文件的列表,該方法需要一個參數用來指定匹配的路徑字符串(本字符串可以為絕對路徑也可以為相對路徑),其返回的文件名只包括當前目錄里的文件名,不包括子文件夾里的文件。
glob.glob(r'c:\*.txt') 我這里就是獲得C盤下的所有txt文件
glob.glob(r'E:\pic\*\*.jpg') 獲得指定目錄下的所有jpg文件
glob.glob(r'../*.py') 上一層路徑下的所有.py文件
fnmatch模塊
此模塊的主要作用是文件名稱的匹配,fnmatch有2個比較常用的方法: fnmatch 、 filter
| 字符 | 含義 |
| * | 匹配所有字符 |
| ? | 匹配單個字符 |
| [seq] | 匹配指定范圍內的字符 |
| [seq] | 匹配不在指定范圍內的字符 |
fnmatch.fnmatch(filename, patten) 測試filename,是否符合pattern
import
fnmatch
import
os
for
file
in
os.listdir(
'
.
'
):
#
os.listdir返回指定的文件夾包含的文件或文件夾的名字的列表
if
fnmatch.fnmatch(file,
'
*.py
'
):
#
判斷是否有后綴為.py的文件,*代表文件名長度格式不限制。
print
(file)
fnmatch.filter(names, pattern) 實現列表特殊字符的過濾或篩選,返回符合匹配模式的字符列表,
import
fnmatch
filelist
=[
"
a.text
"
,
"
b.jpg
"
,
"
c.png
"
,
"
d.py
"
,
'
e.text
'
,
"
sss.py
"
]
print
(fnmatch.filter(filelist,
"
?.py
"
))
#
匹配前面是一個字符的.py文件
#
輸出:d.py
os的文件操作
os.path()
os.path?常用方法:
import
os
print
(os.path.splitext(
'
./data/large.wav
'
))
#
分離文件名和擴展名 ('./data/large', '.wav')
print
(os.path.splitext(
'
./data/large
'
))
#
分離文件名和擴展名 ('./data/large', '')
print
(os.path.split(
'
/root/runoob.txt
'
))
#
分割文件名與路徑 ('/root', 'runoob.txt')
print
(os.path.join(
'
root
'
,
'
test
'
,
'
runoob.txt
'
))
#
將目錄和文件名合成一個路徑 root/test/runoob.txt
os.path.isdir(
'
d:/books/book
'
)
#
判斷某一路徑是否為目錄
os.path.isfile(
'
d:/books/book/book.txt
'
)
#
判斷某一路徑是否為文件
創(chuàng)建目錄 os . mkdir ( path )
其參數path為要創(chuàng)建的目錄,但只能創(chuàng)建一級目錄,不能創(chuàng)建多級目錄。
os.mkdir(r
"
C:\Users\Never\Desktop\aa
"
)
#
在桌面創(chuàng)建一個aa目錄
刪除目錄 os.rmdir(path)
刪除一級目錄
os.rmdir(
'
d:\hmm
'
)
#
把D盤下的hmm的目錄刪除
創(chuàng)建多級目錄 os.makedirs(path)
創(chuàng)建多級目錄,其參數path 為要創(chuàng)建目錄的路徑。
os.makedirs(r
"
C:\Users\Never\Desktop\aa\bb
"
)
#
在桌面創(chuàng)建一個aa目錄,并在aa目錄中創(chuàng)建bb目錄
刪除多級目錄 os.removedirs(path)
刪除多級目錄,注意:要刪除的目錄必須是空目錄,即目錄沒有文件
os.removedirs(
'
d:\\books\\book
'
)
#
注意:要刪除的目錄必須是空目錄
刪除文件 os.remov(path)
os.remove(
'
d:\\books\\book\\book.txt
'
)
#
刪除D盤下books目錄下book目錄中的book.txt的文件
遍歷目錄 os.walk(path)
其參數path 為要遍歷的目錄,返回一個三元素的元組? (root,dirs,files)
- root 所指的是當前正在遍歷的這個文件夾的本身的地址
- dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄)
- files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)
如果我們有如下的文件結構:
a -> b -> 1.txt, 2
.txt
c
-> 3
.txt
d
->
4
.txt
5.txt
for
(root, dirs, files)
in
os.walk(
'
a
'
):
#
第一次運行時,當前遍歷目錄為 a
所以 root ==
'
a
'
dirs
== [
'
b
'
,
'
c
'
,
'
d
'
]
files
== [
'
4.txt
'
,
'
5.txt
'
]
#
接著遍歷 dirs 中的每一個目錄
b: root =
'
a\\b
'
dirs
=
[]
files
= [
'
1.txt
'
,
'
2.txt
'
]
#
dirs為空,返回
#
遍歷c
c: root =
'
a\\c
'
dirs
=
[]
files
= [
'
3.txt
'
]
PS : 如果想獲取文件的全路徑,只需要
for
f
in
files:
path
=
os.path.join(root,f)
#
遍歷d
d: root =
'
a\\b
'
dirs
=
[]
files
=
[]
#
遍歷完畢,退出循環(huán)
綜合使用
列出一個文件夾中的所有音頻文件,把文件名存儲到列表中,這段代碼經常會用到
wav_list =
[]
for
root, dirnames, filenames
in
os.walk(
"
./VCTK/p225
"
):
for
filename
in
fnmatch.filter(filenames,
"
*.wav
"
):
#
實現列表特殊字符的過濾或篩選,返回符合匹配“.wav”字符列表
wav_list.append(os.path.join(root, filename))
print
(wav_list)
#
['./VCTK/p225\\p225_001.wav', '/VCTK/p225\\p225_002.wav',...
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

