我需要列出文件夹中包含目录路径的所有文件。我尝试使用 os.walk
,这显然是完美的解决方案。
但是,它还会列出隐藏的文件夹和文件。我希望我的应用程序不列出任何隐藏的文件夹或文件。您是否可以使用任何标志来使其不产生任何隐藏文件?
跨平台对我来说并不是很重要,如果它只适用于 linux (.* pattern) 就可以了
原文由 unddoch 发布,翻译遵循 CC BY-SA 4.0 许可协议
我意识到这个问题没有被问到,但我有一个类似的问题,我想排除隐藏文件和以 __
开头的文件,特别是 __pycache__
目录。我提出这个问题是因为我试图弄清楚为什么我的列表理解没有达到我的预期。我没有用 dirnames[:]
修改列表。
我创建了一个前缀列表,我想排除并修改目录名,如下所示:
exclude_prefixes = ('__', '.') # exclusion prefixes
for dirpath, dirnames, filenames in os.walk(node):
# exclude all dirs starting with exclude_prefixes
dirnames[:] = [dirname
for dirname in dirnames
if not dirname.startswith(exclude_prefixes)]
原文由 dmmfll 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答846 阅读✓ 已解决
不,没有选项
os.walk()
将跳过这些选项。你需要自己做(这很容易):注意
dirs[:] =
切片赋值;os.walk
递归遍历dirs
列出的子目录。通过将dirs
的 元素 替换为满足条件的元素(例如,名称不以.
开头的目录),os.walk()
将不会访问目录达不到标准。这仅在您将
topdown
关键字参数保留为True
时有效,来自 --- 的os.walk()
: