python3 檔案查詢、讀取
整理一下檔案讀取方法。
1.資料夾讀取的幾種方法
1.1 os.listdir()
'''
方法一,使用os.listdir
'''
import os
for filename in os.listdir():
print(filename)
os.listdir():括號裡是目錄地址引數,沒有輸入引數表示當前目錄
1.2 os.walk(path)
path是指想遍歷資料夾的路徑。
''' 方法二,使用os.walk ''' import os print(os.getcwd()) path = os.getcwd() for i in os.walk(path): print(i)
結果截圖(一部分):
注意:os.walk(path)函式得到的結果是一個或多個tuple,個數取決於路徑下是否有資料夾:如果沒有資料夾的話,只有一個tuple,如果有的話,假如有N個,那麼就會有N+1個tuple。
每個tuple中有三項內容:
1.當前資料夾的路徑(str型別)
2.當前資料夾中的所有資料夾名稱(list型別) ,要是當前資料夾中沒有子檔案夾了,就返回[ ]
3.當前資料夾中所有檔案的名稱
所以,當只需要遍歷當前資料夾下的檔案時,只需要取出tuple的第三項即可。 或者使用os.listdir(path)函式能得到資料夾下所有檔案(包括資料夾)的名稱,但是無法獲取子資料夾的狀態。
一個學習例子,使用os.listdir ()遞迴呼叫檔案:
import os def list_all_files(rootdir): _files = [] list = os.listdir(rootdir) #列出資料夾下所有的目錄與檔案 for i in range(0,len(list)): path = os.path.join(rootdir,list[i])#合併路徑,將rootdir和list合併 if os.path.isdir(path): _files.extend(list_all_files(path))#遞迴呼叫函式 if os.path.isfile(path): _files.append(path) return _files rootdir = os.getcwd() file = list_all_files(rootdir) print(file)
使用了幾個新函式:
1.os.path.join()路徑合併函式,參考 Python中 os.path.join()與join()對比join()函式
2.append和extend區別:https://blog.csdn.net/qq_27871973/article/details/82796992
2、Python中glob模組查詢檔案路徑
1.glob.glob(pathname), 返回所有匹配的檔案路徑列表。它只有一個引數pathname,定義了檔案路徑匹配規則,這裡可以是絕對路徑,也可以是相對路徑。
2.glob.iglob(pathname), 獲取一個可編歷物件,使用它可以逐個獲取匹配的檔案路徑名。與glob.glob()的區別是:glob.glob同時獲取所有的匹配路徑,而glob.iglob一次只獲取一個匹配路徑。
import glob
print(glob.glob(r'*.py'))
print(glob.glob(r'.\*.py'))
print(glob.glob(r'*.doc'))#查抄doc檔案
print(glob.iglob(r'*.py'))#獲取一個可以遍歷的物件。
name = glob.iglob(r'.\*.py')
for file in name:
print(file)
結果如下:
['ReadFilename.py', 'test_tfrecord.py', 'write_tfrecord.py']
['.\\ReadFilename.py', '.\\test_tfrecord.py', '.\\write_tfrecord.py']
[]
<generator object _iglob at 0x000000000BF786D0>
.\ReadFilename.py
.\test_tfrecord.py
.\write_tfrecord.py
參考資料
[1] https://blog.csdn.net/AManFromEarth/article/details/79125361