2014-03-05 170 views

回答

31

您需要過濾掉目錄; os.listdir()列出給定路徑中的所有名稱。您可以使用os.path.isdir()這個:

basepath = '/path/to/directory' 
for fname in os.listdir(basepath): 
    path = os.path.join(basepath, fname) 
    if os.path.isdir(path): 
     # skip directories 
     continue 

os.walk()做引擎蓋下同樣的工作;除非你需要遞減子目錄,否則你不需要在這裏使用os.walk()

+2

正是我一直在尋找。以實例更多知識。我必須選擇一個答案,但是我會嘗試和研究所有三個增加的概念。 – Bartee

4
for fname in os.listdir('.'): 
    if os.path.isdir(fname): 
     pass # do your stuff here for directory 
    else: 
     pass # do your stuff here for regular file 
+3

我認爲你的意思是'os.path',而不是'of.path'。 –

+0

表示「在這裏做你的事情」的註釋不應該在if塊內。 –

+0

Added else branch – nagylzs

13

這裏是一個不錯的一個班輪在列表理解的形式:

[f for f in os.listdir(your_directory) if os.path.isfile(os.path.join(your_directory, f))] 

這將return文件名的指定your_directorylist

+2

可選:'filter(os.path.isfile,os.listdir(your_directory))' –

+4

這實際上並不起作用,因爲'f'是一個文件名,而不是一個完整的路徑。你需要'os.path.isfile(os.path.join(your_directory,f))'那裏。 –

7
import os 
filter(os.path.isfile, os.listdir(os.curdir)) 

os.curdir是當前目錄

相關問題