Python中os.listdir() 獲取指定目錄中的文件和子目錄的列表
os.listdir() 函數(shù)
os.listdir() 是 Python os 模塊中的一個(gè)函數(shù),用于獲取指定目錄中的文件和子目錄的列表。它返回一個(gè)包含 目錄內(nèi)容 的 列表,但不會(huì)遞歸進(jìn)入子目錄。
1. os.listdir() 語法
import os os.listdir(path=".")
參數(shù):
path(可選):要列出文件和目錄的路徑,默認(rèn)為當(dāng)前目錄(.)。- 返回值:一個(gè) 列表,其中包含指定目錄下的 文件 和 子目錄 的 名稱(不包含路徑)。
返回類型:
- 列表(
list),其中的元素是文件和目錄的名稱(字符串)。
2. 基本用法示例
2.1 列出當(dāng)前目錄中的所有文件和文件夾
import os # 列出當(dāng)前目錄的所有文件和子目錄 file_list = os.listdir() print(file_list)
2.2 列出指定目錄中的所有文件和子目錄
import os # 指定一個(gè)目錄 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)容,不會(huì)遞歸進(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é)合使用
可以對(duì) os.listdir() 返回的列表進(jìn)行排序,按照名稱、大小或修改時(shí)間排序。
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 按修改時(shí)間排序
import os path = "/path/to/directory" files = os.listdir(path) # 獲取按修改時(shí)間排序的文件列表 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用實(shí)例說明python的*args和**kwargs用法
python的*args和**kwargs如何用,看了下面的例子你就清楚了。2013-11-11
Python XML轉(zhuǎn)Json之XML2Dict的使用方法
今天小編就為大家分享一篇Python XML轉(zhuǎn)Json之XML2Dict的使用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python 自動(dòng)化偷懶的四個(gè)實(shí)用操作
這篇文章主要介紹了python 自動(dòng)化偷懶的四個(gè)實(shí)用操作,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-04-04
使用Pandas的ExcelWriter操作excel的方法
這篇文章主要介紹了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter這個(gè)插件有個(gè)坑,就是已經(jīng)設(shè)置好的格式是無法更改的,因此,由pandas轉(zhuǎn)成excel的時(shí)候,必須將格式清除,尤其是表頭的格式需要大家多多注意,本文結(jié)合示例代碼講解的非常詳細(xì),需要的朋友參考下吧2023-11-11
基于Python編寫簡(jiǎn)易版的天天跑酷游戲的示例代碼
這篇文章主要介紹了如何利用Python編寫一個(gè)簡(jiǎn)易版的天天跑酷游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下2022-03-03
Pandas使用query()優(yōu)雅的查詢實(shí)例
本文主要介紹了Pandas使用query()優(yōu)雅的查詢實(shí)例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Python實(shí)現(xiàn)yaml與json文件批量互轉(zhuǎn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)yaml與json文件的批量互轉(zhuǎn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-07-07

