1. 程式人生 > >python獲取檔案所在目錄和檔名,檢索當前檔名的方法

python獲取檔案所在目錄和檔名,檢索當前檔名的方法

情況1:在一個目錄下面只有檔案,沒有資料夾,這個時候可以使用os.listdir
在我們有一個file目錄(資料夾),裡面有三個檔案:
file(dir)|

--|test1.txt

--|test2.txt

--|test3.txt

用下面的程式獲得檔案的絕對路徑:

import os
path = r'C:/Users/lijiale/chdata'
for filename in os.listdir(path):
    print(os.path.join(path,filename))

使用os.listdir讀取到一個目錄下面所有的檔名,然後使用os.path.join把目錄的路徑和檔名結合起來,就得到了檔案的絕路路徑,結果如下:
這裡寫圖片描述


情況2:遞迴的情況,一個目錄下面既有目錄也有檔案,使用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\lijiale\chdata'
for dirpath,dirnames,filenames in os.walk(path):
    print(dirpath,dirnames,filenames)

結果:
這裡寫圖片描述
os.walk輸入一個路徑名稱,以yield的方式(其實是一個生成器)返回一個三元組 dirpath, dirnames, filenames:
dirpath為目錄的路徑,為一個字串。比如上面的…\file和…file\file1等。
dirnames列出了目錄路徑下面所有存在的目錄的名稱。比如在 …\file下面有兩個目錄:file1和file2,那麼它就列出了這個目錄路徑下的目錄名稱。
filenames列出了目錄路徑下面所有檔案的名稱。同樣在…\file下面有兩個檔案file_test1.txt和file_test2 .txt,那麼程式將會列出這兩個檔名。
如何獲得一個路徑下面所有的檔案路徑:

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

得到的結果如下:
這裡寫圖片描述

print(__file__)
print(sys.argv[0])
print(os.path.dirname(__file__))
print(os.path.split(__file__)[-1])//以/分割字串,保留最後一段
print(os.path.split(__file__)[-1].split('.')[0])

對應的返回結果:

D:/python/lijiale/examples/test.py
D:/python/lijiale/examples/test.py
D:/python/lijiale/examples
test.py
test