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