您需要过滤掉目录;
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
请注意,这仅在以下符号链接之后 过滤掉目录 。
fname不一定是 常规文件
,也可以是文件的符号链接。如果还需要过滤掉符号链接,则需要先使用
notos.path.islink()。
在现代的Python版本(3.5或更高版本)上,更好的选择是使用
os.scandir()函数;这产生
DirEntry()实例。在通常情况下,这更快,因为加载的Direntry已经缓存了足够的信息来确定条目是否为目录:
basepath = '/path/to/directory'for entry in os.scandir(basepath): if entry.isdir(): # skip directories continue # use entry.path to get the full path of this entry, or use # entry.name for the base filename
entry.is_file(follow_symlinks=False)如果仅需要常规文件(而无需符号链接),则可以使用。
os.walk()在后台进行相同的工作;除非您需要递归向下的子目录,否则无需在
os.walk()此处使用。



