因?yàn)槠綍r(shí)用everything很舒服,查找文件是真的很方便,
但是既然用到了Python,就想到可不可以來自己實(shí)現(xiàn)一下,
下面的分析是針對(duì)一個(gè)目錄來查找的,當(dāng)你知道文件大致有什么東西的時(shí)候,
比如你要查找 md 結(jié)尾的的文件,又大致知道在哪個(gè)目錄的時(shí)候,就可以來自己查找。
下面是我自己臨時(shí)創(chuàng)建的一個(gè)目錄 C:\\tmp\\test
當(dāng)前的文件結(jié)構(gòu)如下:
|-- C:\\tmp\\test
|-- 1.log
|-- result.txt
|-- test.md
|-- cool
| |-- cool.md
| |-- cool_sub
| |-- sub.md
|-- how
|-- how.md
這里用到了os模塊下的walk函數(shù),它會(huì)自動(dòng)遞歸遍歷一個(gè)目錄下的所有子目錄:
import os
PATH = r'C:\\tmp\\test'
for root, dirs, files in os.walk(PATH):
print('root: ', root)
print('dirs: ', dirs)
print('files: ', files)
print('---------------------------------------')
輸出:
root: C:\\tmp\\test
dirs: ['cool', 'how']
files: ['1.log', 'result.txt', 'test.md']
---------------------------------------
root: C:\\tmp\\test\\cool
dirs: ['cool_sub']
files: ['cool.md']
---------------------------------------
root: C:\\tmp\\test\\cool\\cool_sub
dirs: []
files: ['sub.md']
---------------------------------------
root: C:\\tmp\\test\\how
dirs: []
files: ['how.md']
---------------------------------------
從上面可以看出,root 是每一個(gè)目錄,
dirs 是 root 這個(gè)目錄下所有的文件夾,
files 是 root 這個(gè)目錄下所有的文件
我們這個(gè)時(shí)候如果想查找 md 結(jié)尾的文件,就可以用下面的方法:
import glob
print("找出的文件如下: ")
for root, dirs, files in os.walk(PATH):
# glob可以用正則表達(dá)式查找一個(gè)目錄下匹配的文件名
file_pattern = os.path.join(root, '*.md')
for f in glob.glob(file_pattern):
print(f)
輸出:
找出的文件如下:
C:\\tmp\\test\\test.md
C:\\tmp\\test\\cool\\cool.md
C:\\tmp\\test\\cool\\cool_sub\\sub.md
C:\\tmp\\test\\how\\how.md
這里我們可以加上找出的文件個(gè)數(shù),
len是Python內(nèi)置的函數(shù),可以獲取一個(gè)列表的長度:
files = [1, 2, 3]
len_files = len(files)
print("列表的長度是:", len_files)
輸出:
列表的長度是: 3
最終的代碼如下:
import osimport glob
PATH = r'C:\\tmp\\test'
file_list = []
for root, dirs, files in os.walk(PATH):
file_pattern = os.path.join(root, '*.md')
for f in glob.glob(file_pattern):
file_list.append(f)
print("一共找出 %d 個(gè)文件" % len(file_list))
print("找出的文件如下: ")
for f in file_list:
print(f)
輸出:
一共找出 4 個(gè)文件
找出的文件如下:
C:\\tmp\\test\\test.md
C:\\tmp\\test\\cool\\cool.md
C:\\tmp\\test\\cool\\cool_sub\\sub.md
C:\\tmp\\test\\how\\how.md
-
分析
+關(guān)注
關(guān)注
2文章
134瀏覽量
33240 -
目錄
+關(guān)注
關(guān)注
3文章
13瀏覽量
8216 -
python
+關(guān)注
關(guān)注
53文章
4752瀏覽量
84067
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論