Python – 如何在os.listdir中查找文件和跳过目录

我使用os.listdir ,它工作正常,但我也得到了列表中的子目录,这不是我想要的:我只需要文件。

我需要使用什么function?

我也看着os.walk ,这似乎是我想要的,但我不知道它是如何工作的。

你需要过滤出目录; os.listdir()列出给定path中的所有名称 。 你可以使用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()做了同样的工作。 除非你需要递减子目录,你不需要在这里使用os.walk()

这是一个很好的列表理解的小单行:

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

这将return指定的your_directory list的文件名list

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

os.curdir是当前目录

 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