gpt4 book ai didi

不进入特定文件夹的 Python walker

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:48 25 4
gpt4 key购买 nike

这是我的第一篇文章,所以要温柔。 ;)

问题:我希望能够将 os.walk 用作目录 walker,但不能进入某些文件夹。例如:

树:

\Proj1_0
\Load001
\lib
\src
\Proj2_0
\Load001
\lib
\src
\Load002
\lib
\src

我想显示项目和负载,但不显示负载下的子目录。我可以使用以下代码来做到这一点。

import os


for root, subFolders, files in os.walk('.'):
# root does NOT contain 'Load'
if root.find('Load') == -1:
print "\nPROJECT: " + root + "\n"
for folder in subFolders:
print " " + folder

但是,该列表是一个大列表,所以我尝试使用 del 来但无法使其正常工作,使用列表也是如此,例如(我从此处的另一篇文章中获得):

def my_walk(top_dir, ignore):
for dirpath, dirnames, filenames in os.walk(top_dir):
dirnames[:] = [
dn for dn in dirnames
if os.path.join(dirpath, dn) not in ignore]
yield dirpath, dirnames, filename
list my_walk('.','Load')

但我也无法正常工作。我是 Python 的新手,感谢任何帮助。谢谢!

最佳答案

尝试:

    dirnames[:] = [
dn for dn in dirnames
if ignore not in os.path.join(dirpath, dn)]

您想保留 os.path.join(dirpath, dn) 不包含字符串ignore 的目录。


顺便说一句,您在赋值的左侧使用dirnames[:] 是正确的。要修剪 os.walk 访问的目录,您必须修改相同的列表 dirnames

dirnames[:] = ... 就地修改同一个列表。dirnames = ... 会将名称 dirnames 重定向到不同的值。

关于不进入特定文件夹的 Python walker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12588627/

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