gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:44:15 27 4
gpt4 key购买 nike

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

为此我需要使用什么功能?

我还查看了 os.walk,这似乎是我想要的,但我不确定它是如何工作的。

最佳答案

你需要过滤掉目录; 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

请注意,这仅在遵循符号链接(symbolic link)后过滤掉目录fname 不一定是常规文件,它也可以是文件的符号链接(symbolic link)。如果您还需要过滤掉符号链接(symbolic link),则需要使用 not os.path.islink()首先。

在现代 Python 版本(3.5 或更高版本)上,更好的选择是使用 os.scandir() function ;这会产生 DirEntry() instances .在一般情况下,这会更快,因为加载的目录已经缓存了足够的信息来确定条目是否为目录:

basepath = '/path/to/directory'
for entry in os.scandir(basepath):
if entry.is_dir():
# skip directories
continue
# use entry.path to get the full path of this entry, or use
# entry.name for the base filename

如果只需要常规文件(而不是符号链接(symbolic link)),您可以使用 entry.is_file(follow_symlinks=False)

os.walk() 在后台做同样的工作;除非需要递归子目录,否则这里不需要使用 os.walk()

关于python - 如何在 os.listdir 中查找文件和跳过目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207936/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com