Python中os.listdir() 獲取指定目錄中的文件和子目錄的列表
os.listdir() 函數(shù)
os.listdir()
是 Python os
模塊中的一個函數(shù),用于獲取指定目錄中的文件和子目錄的列表。它返回一個包含 目錄內(nèi)容 的 列表,但不會遞歸進入子目錄。
1. os.listdir() 語法
import os os.listdir(path=".")
參數(shù):
path
(可選):要列出文件和目錄的路徑,默認為當前目錄(.
)。- 返回值:一個 列表,其中包含指定目錄下的 文件 和 子目錄 的 名稱(不包含路徑)。
返回類型:
- 列表(
list
),其中的元素是文件和目錄的名稱(字符串)。
2. 基本用法示例
2.1 列出當前目錄中的所有文件和文件夾
import os # 列出當前目錄的所有文件和子目錄 file_list = os.listdir() print(file_list)
2.2 列出指定目錄中的所有文件和子目錄
import os # 指定一個目錄 path = "/path/to/directory" # 列出該目錄下的所有文件和子目錄 file_list = os.listdir(path) print(file_list)
3. 配合 os.path 進行篩選
3.1 區(qū)分文件和目錄
os.listdir()
只返回名稱,如果你想要區(qū)分文件和目錄,需要使用 os.path.isdir()
和 os.path.isfile()
。
import os path = "/path/to/directory" all_items = os.listdir(path) # 過濾出文件 files = [f for f in all_items if os.path.isfile(os.path.join(path, f))] print("Files:", files) # 過濾出目錄 directories = [d for d in all_items if os.path.isdir(os.path.join(path, d))] print("Directories:", directories)
4. 與 glob 和 fnmatch 結(jié)合進行篩選
如果你想獲取特定類型的文件(如 .txt、.jpg 等),可以結(jié)合 glob 或 fnmatch 進行篩選。
4.1 使用 glob 獲取特定類型的文件
import glob # 獲取當前目錄下所有的 .txt 文件 txt_files = glob.glob("*.txt") print(txt_files)
4.2 使用 fnmatch 進行文件匹配
import os import fnmatch path = "/path/to/directory" all_files = os.listdir(path) # 只匹配 .txt 文件 txt_files = [f for f in all_files if fnmatch.fnmatch(f, "*.txt")] print(txt_files)
5. 遍歷所有文件(包括子目錄)
os.listdir()
只返回 當前目錄 下的內(nèi)容,不會遞歸進入子目錄。如果你需要遍歷所有子目錄,可以使用 os.walk()
。
import os path = "/path/to/directory" for root, dirs, files in os.walk(path): print("Current directory:", root) print("Subdirectories:", dirs) print("Files:", files)
6. 與 sorted() 結(jié)合使用
可以對 os.listdir()
返回的列表進行排序,按照名稱、大小或修改時間排序。
6.1 按文件名排序
import os path = "/path/to/directory" sorted_list = sorted(os.listdir(path)) print(sorted_list)
6.2 按文件大小排序
import os path = "/path/to/directory" files = os.listdir(path) # 獲取按大小排序的文件列表 sorted_files = sorted(files, key=lambda f: os.path.getsize(os.path.join(path, f))) print(sorted_files)
6.3 按修改時間排序
import os path = "/path/to/directory" files = os.listdir(path) # 獲取按修改時間排序的文件列表 sorted_files = sorted(files, key=lambda f: os.path.getmtime(os.path.join(path, f))) print(sorted_files)
7. os.scandir() vs os.listdir()
Python 3.5 以后,推薦使用 os.scandir()
,它比 os.listdir()
更高效,并且可以直接獲取文件類型、大小等信息。
import os path = "/path/to/directory" with os.scandir(path) as entries: for entry in entries: print(f"Name: {entry.name}, Is file: {entry.is_file()}, Is directory: {entry.is_dir()}")
8. 總結(jié)
方法 | 說明 |
---|---|
os.listdir(path) | 獲取目錄下的所有文件和子目錄(不包括路徑) |
os.path.isfile(path) | 判斷路徑是否是文件 |
os.path.isdir(path) | 判斷路徑是否是目錄 |
os.walk(path) | 遞歸遍歷目錄下的所有文件和子目錄 |
os.scandir(path) | 更高效的目錄遍歷方式 |
sorted(os.listdir(path)) | 按文件名排序 |
glob.glob("*.txt") | 獲取指定類型的文件 |
到此這篇關(guān)于Python中os.listdir() 獲取指定目錄中的文件和子目錄的列表的文章就介紹到這了,更多相關(guān)Python os.listdir() 獲取目錄文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于Webhook實現(xiàn)github自動化部署
這篇文章主要介紹了Python基于Webhook實現(xiàn)github自動化部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11python數(shù)據(jù)操作之lambda表達式詳情
這篇文章主要介紹了python數(shù)據(jù)操作之lambda表達式詳情,文章基于python的相關(guān)資料展開lambda表達式具體的內(nèi)容,感興趣的小伙伴可以參考一下2022-05-05