python使用os.listdir和os.walk獲得文件的路徑


情況1:在一個目錄下面只有文件,沒有文件夾,這個時候可以使用os.listdir

在我們的桌面上有一個file目錄(文件夾),里面有三個文件

file(dir)|

    --|test1.txt

    --|test2.txt

    --|test3.txt

用下面的程序獲得文件的絕對路徑:

import os
path = r'C:\Users\Administrator\Desktop\file'
for filename in os.listdir(path):
    print(os.path.join(path,filename))

使用os.listdir讀取到一個目錄下面所有的文件名,然后使用os.path.join把目錄的路徑和文件名結合起來,就得到了文件的絕路路徑,結果如下:

C:\Users\Administrator\Desktop\file\test1.txt
C:\Users\Administrator\Desktop\file\test2.txt
C:\Users\Administrator\Desktop\file\test3.txt

情況2:遞歸的情況,一個目錄下面既有目錄也有文件,使用os.walk:

os.walk介紹:

我們在桌面上面建立一個file目錄,里面的組織結構如下:

file(dir):

     --|file1(dir):

           --|file1_test1.txt

           --|file1_test2.txt

     --|file2(dir)

           --|file2_test1.txt

     --|file_test1.txt

     --|file_test2.txt

運行一下代碼:

import os
path = r'C:\Users\Administrator\Desktop\file'
for dirpath,dirnames,filenames in os.walk(path):
    print(dirpath,dirnames,filenames)

輸出結果如下:

C:\Users\Administrator\Desktop\file ['file1', 'file2'] ['file_test1.txt', 'file_test2 .txt']
C:\Users\Administrator\Desktop\file\file1 [] ['file1_test1.txt', 'file1_test2.txt']
C:\Users\Administrator\Desktop\file\file2 [] ['file2_test1.txt']

os.walk輸入一個路徑名稱,以yield的方式(其實是一個生成器)返回一個三元組 dirpath, dirnames, filenames,

dirpath為目錄的路徑,為一個字符串。比如上面的 C:\Users\Administrator\Desktop\file和C:\Users\Administrator\Desktop\file\file1等。

dirnames列出了目錄路徑下面所有存在的目錄的名稱。比如在 C:\Users\Administrator\Desktop\file下面有兩個目錄:file1和file2,那么它就列出了這個目錄路徑下的目錄名稱。

filenames列出了目錄路徑下面所有文件的名稱。同樣在 C:\Users\Administrator\Desktop\file下面有兩個文件file_test1.txt和file_test2 .txt,那么程序將會列出這兩個文件名。

如何獲得一個路徑下面所有的文件路徑:

import os
path = r'C:\Users\Administrator\Desktop\file'
for dirpath,dirnames,filenames in os.walk(path):
    for filename in filenames:
        print(os.path.join(dirpath,filename))

得到的結果如下:

C:\Users\Administrator\Desktop\file\file_test1.txt
C:\Users\Administrator\Desktop\file\file_test2 .txt
C:\Users\Administrator\Desktop\file\file1\file1_test1.txt
C:\Users\Administrator\Desktop\file\file1\file1_test2.txt
C:\Users\Administrator\Desktop\file\file2\file2_test1.txt

 


免責聲明!

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



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