介紹
Python是一種流行的編程語言,具有強大的庫和模塊。其中一個有趣的模塊是os模塊,提供了與操作系統進行交互的方法。在本篇文章中,我們將專註於使用os模塊中的listdir函數獲取目錄中的文件列表的方法。這是一個非常常見的任務,我們將使用Python代碼演示如何獲取目錄中的文件列表。
正文
1. listdir函數的基本用法
listdir是os模塊中的函數,可以列出指定目錄中所有文件和文件夾的名稱。它的用法非常簡單,只需要向它傳遞一個目錄路徑即可:
import os # 列出當前目錄下的文件和文件夾 files = os.listdir('.') print(files)
運行上面的代碼後,會列出當前目錄下的所有文件和文件夾的名稱,並將它們存儲在一個list中。
2. 使用列表推導式過濾文件列表
listdir函數默認列出目錄中的所有文件和文件夾的名稱,但我們只需要列出其中的文件名稱,可以使用Python中的列表推導式來過濾結果:
import os # 列出當前目錄下的所有文件名稱 files = [file for file in os.listdir('.') if os.path.isfile(os.path.join('.', file))] print(files)
使用列表推導式,我們可以將文件夾排除在結果之外,只顯示文件名稱。
3. 使用遞歸函數列出子目錄中的文件
如果要列出目錄中所有子目錄中的文件,我們可以使用遞歸函數。下面的代碼演示了如何遞歸地列出目錄中的文件:
import os def list_files(path): # 列出路徑中的所有文件和文件夾的名稱 files = os.listdir(path) # 循環遍歷 for file in files: # 判斷是否為文件 if os.path.isfile(os.path.join(path, file)): # 如果是文件,則打印出文件名 print(os.path.join(path, file)) # 如果是目錄,則遞歸調用這個函數 else: list_files(os.path.join(path, file)) # 列出當前目錄下的所有文件 list_files('.')
該函數使用os.listdir獲取指定目錄中所有文件和文件夾的名稱。然後,如果是一個文件,則打印出文件名;如果是一個目錄,則遞歸調用list_files函數來列出這個目錄中的文件。
4. 使用正則表達式過濾文件名
有時候,我們需要列出目錄中指定擴展名的所有文件,比如列出所有的.jpg文件。這時,我們可以使用正則表達式過濾文件名:
import os import re # 列出當前目錄下所有的.jpg文件 pattern = re.compile('.*\.jpg$') files = [file for file in os.listdir('.') if re.match(pattern, file)] print(files)
在上面的代碼中,我們使用re.compile創建了一個正則表達式模式,該模式匹配以.jpg結尾的文件名。然後使用列表推導式並且結合os.listdir,過濾出所有符合這個條件的文件名。
小結
在本篇文章中,我們重點介紹了使用os模塊中的listdir函數獲取目錄中的文件列表的方法,並從多個方面對該函數做了詳細的闡述:
- listdir函數的基本用法
- 使用列表推導式過濾文件列表
- 使用遞歸函數列出子目錄中的文件
- 使用正則表達式過濾文件名
通過這些方法,我們可以靈活地列出符合我們需求的文件列表。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/192201.html