2014-03-05 171 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是当前目录

相关问题