python獲取檔案所在目錄和檔名,檢索當前檔名的方法
阿新 • • 發佈:2019-01-23
情況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