Python學習筆記:列出目錄下所有文件或目錄


一、背景

實現某個目錄下所有文件(包含子目錄中的文件)的列出,可以使用 Python 實現。

二、實現

  • 方法一
# 修改工作目錄
import os
os.chdir(r'C:\Users\Hider\Desktop')

# 定義函數
def list_all_files(rootdir):
    import os
    _files = []
	# 列出文件夾下所有的目錄與文件
    list = os.listdir(rootdir)
    for i in range(0, len(list)):
		# 構造路徑
        path = os.path.join(rootdir, list[i])
		# 判斷路徑是否為文件目錄或者文件
		# 如果是目錄則繼續遞歸
        if os.path.isdir(path):
            _files.extend(list_all_files(path))
        if os.path.isfile(path):
            _files.append(path)
    return _files

# 執行
dir = r'C:\Users\Hider\Desktop\python' # 目錄地址
list_all_files(dir)

# 結果
```
['C:\\Users\\Hider\\Desktop\\python\\dataminingguide.pdf',
 'C:\\Users\\Hider\\Desktop\\python\\kaggle-titanic-learning.py',
 'C:\\Users\\Hider\\Desktop\\python\\nba.txt',
 'C:\\Users\\Hider\\Desktop\\python\\python-pandas-learning.py',
 'C:\\Users\\Hider\\Desktop\\python\\python_algorithm_learning.py',
 'C:\\Users\\Hider\\Desktop\\python\\Python編程:從入門到實踐.pdf',
 'C:\\Users\\Hider\\Desktop\\python\\《Python數據挖掘入門與實踐》.pdf',
 'C:\\Users\\Hider\\Desktop\\python\\大數定理.py',
 'C:\\Users\\Hider\\Desktop\\python\\技術學習.sql',
 'C:\\Users\\Hider\\Desktop\\python\\泰坦尼克\\gender_submission.csv',
 'C:\\Users\\Hider\\Desktop\\python\\泰坦尼克\\test.csv',
 'C:\\Users\\Hider\\Desktop\\python\\泰坦尼克\\titanic.zip',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\abalone.csv',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\abalone.data',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\abalone.names',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\abalone.txt',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\dim_sex.xlsx',
 'C:\\Users\\Hider\\Desktop\\python\\鮑魚\\鮑魚數據集.md']

```

使用遞歸的方式列出目錄及其子目錄下的文件。

os.listdir('dir') # 列出當前目錄下的所有文件
os.path.isdir('dir') # 判斷是否目錄,返回布爾值,不存在也返回False
os.path.isfile('dir') # 判斷是否文件
os.path.join('dir', 'dir2') # 連接路徑,返回全路徑
  • 方法二
import os # 系統
path = r'C:\Users\Hider\Desktop\python'

# 定義函數
def print_files(path):
    lsdir = os.listdir(path)
    dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
    files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
    if files:
        for f in files:
            print(os.path.join(path, f))
    if dirs:
        for d in dirs:
            print_files(os.path.join(path, d)) # 遞歸查找
    # return 0

# 執行
print_files(path)

代碼執行的邏輯思路:

(1)先列出路徑下的所有文件;

(2)過濾目錄;

(3)過濾文件;

(4)判斷目錄下是否有文件,若有就打印出該文件;

(5)判斷目錄下是否有子目錄,若有就通過遞歸再遍歷子目錄下的文件或者目錄。

參考鏈接1:利用python列出當前目錄下的所有文件

參考鏈接2:python遞歸列文件_python遞歸列出目錄及其子目錄下所有文件

參考鏈接3:Python:打印某個路徑下的所有文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM