Python中os.listdir() 獲取指定目錄中的文件和子目錄的列表
os.listdir() 函數(shù)
os.listdir() 是 Python os 模塊中的一個函數(shù),用于獲取指定目錄中的文件和子目錄的列表。它返回一個包含 目錄內(nèi)容 的 列表,但不會遞歸進(jìn)入子目錄。
1. os.listdir() 語法
import os os.listdir(path=".")
參數(shù):
path(可選):要列出文件和目錄的路徑,默認(rèn)為當(dāng)前目錄(.)。- 返回值:一個 列表,其中包含指定目錄下的 文件 和 子目錄 的 名稱(不包含路徑)。
返回類型:
- 列表(
list),其中的元素是文件和目錄的名稱(字符串)。
2. 基本用法示例
2.1 列出當(dāng)前目錄中的所有文件和文件夾
import os # 列出當(dāng)前目錄的所有文件和子目錄 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 進(jìn)行篩選
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é)合進(jìn)行篩選
如果你想獲取特定類型的文件(如 .txt、.jpg 等),可以結(jié)合 glob 或 fnmatch 進(jìn)行篩選。
4.1 使用 glob 獲取特定類型的文件
import glob
# 獲取當(dāng)前目錄下所有的 .txt 文件
txt_files = glob.glob("*.txt")
print(txt_files)
4.2 使用 fnmatch 進(jìn)行文件匹配
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() 只返回 當(dāng)前目錄 下的內(nèi)容,不會遞歸進(jìn)入子目錄。如果你需要遍歷所有子目錄,可以使用 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() 返回的列表進(jìn)行排序,按照名稱、大小或修改時間排序。
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自動化部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
python數(shù)據(jù)操作之lambda表達(dá)式詳情
這篇文章主要介紹了python數(shù)據(jù)操作之lambda表達(dá)式詳情,文章基于python的相關(guān)資料展開lambda表達(dá)式具體的內(nèi)容,感興趣的小伙伴可以參考一下2022-05-05

