首頁 > 後端開發 > Python教學 > 如何自訂 Python os.walk() 函數的輸出以建立巢狀目錄清單?

如何自訂 Python os.walk() 函數的輸出以建立巢狀目錄清單?

Susan Sarandon
發布: 2024-11-08 15:57:02
原創
918 人瀏覽過

How Can I Customize the Output of Python's os.walk() Function to Create a Nested Directory Listing?

在Python 中使用os.walk() 遞歸遍歷目錄:詳細指南

簡介

Python 的os.walk()函數提供了一個強大的機制來遞歸遍歷目錄樹。它會迭代指定目錄中的所有目錄和文件,使其成為文件管理和目錄探索等任務的重要工具。

問題:自訂目錄清單輸出

為了示範os.walk() 的功能,請考慮以下場景:您想要從根目錄遞歸導覽並列印自訂的目錄和檔案列表,包括嵌套層級。

初始程式碼和O/P

使用以下程式碼:

import os
import fnmatch

for root, dir, files in os.walk("."):
    print(root)
    print("")
    for items in fnmatch.filter(files, "*"):
        print("..." + items)
    print("")
登入後複製

你得到以下輸出:

.

...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py

./packagedemo

...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
登入後複製

但是,這個輸出不符合所需的格式:
A
---a.txt
---b.txt
---B
------c.out
登入後複製
登入後複製

要自訂輸出,需要一種改良的方法。以下程式碼實現了所需的格式:
import os

# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk("."):
    path = root.split(os.sep)
    print((len(path) - 1) * '---', os.path.basename(root))
    for file in files:
        print(len(path) * '---', file)
登入後複製

說明

此程式碼使用下列邏輯:
  1. 它分割根使用作業系統的目錄分隔符號(例如UNIX 上的“/”)將路徑插入清單路徑。
  2. 它使用適當數量的前導連字元列印目前目錄的基本名稱,表示其嵌套層級。
  3. 它迭代目前目錄中的檔案並列印每個檔案及其嵌套層級。

輸出

使用此改良的程式碼,您可以將得到所需的輸出:
A
---a.txt
---b.txt
---B
------c.out
登入後複製
登入後複製

在此輸出中,A和B代表目錄,而a.txt、b.txt和c.out代表檔案。連字符前綴的數量表示每個項目的嵌套層級。

以上是如何自訂 Python os.walk() 函數的輸出以建立巢狀目錄清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板