相关疑难解决方法(0)

在os.walk中排除目录

我正在编写一个脚本,它下载到目录树(使用os.walk()),然后访问与特定文件扩展名匹配的每个文件.但是,由于我的工具将使用的某些目录树也包含子目录,而这些子目录又包含很多无用的东西(为了这个脚本的目的),我想我会为用户添加一个选项来指定要从遍历中排除的目录列表.

使用os.walk()很容易.毕竟,由我来决定我是否真的想要访问os.walk()产生的相应文件/目录,或者只是跳过它们.问题是,如果我有一个像这样的目录树:

root--
     |
     --- dirA
     |
     --- dirB
     |
     --- uselessStuff --
                       |
                       --- moreJunk
                       |
                       --- yetMoreJunk
Run Code Online (Sandbox Code Playgroud)

我想要排除uselessStuff及其所有子节点,os.walk()仍将下载到uselessStuff的所有(可能是数千个)子目录中,不用说,它会减慢很多东西.在一个理想的世界里,我可以告诉os.walk()甚至不会再让无用的孩子产生无用的东西了,但据我所知,没有办法做到这一点(是吗?).

有没有人有想法?也许有第三方库提供类似的东西?

python

132
推荐指数
2
解决办法
4万
查看次数

我可以强制python3的os.walk按字母顺序访问目录吗?怎么样?

我想知道是否可以在python3中强制os.walk按字母顺序访问目录.例如,这是一个目录和一些将遍历此目录的代码:

ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05

--------

def main_work_subdirs(gl):
    for root, dirs, files in os.walk(gl['pwd']):
        if root == gl['pwd']:
            for d2i in dirs:
                print(d2i)
Run Code Online (Sandbox Code Playgroud)

当python代码点击上面的目录时,输出如下:

ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Run Code Online (Sandbox Code Playgroud)

我想强迫步行按字母顺序访问这些目录01, 02 ... 05.在python3 doc中os.walk,它说:

当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中; 这可以用来修剪搜索,强加一个特定的访问顺序

这是否意味着我可以强加一个按字母顺序排列的访问顺序os.walk?如果是这样,怎么样?

os.walk python-3.x

25
推荐指数
2
解决办法
5072
查看次数

os.walk 的迭代在 Python 3 中如何工作?

根据 Python 3文档, os.walk返回一个 3 元组。但是,这不起作用:

root, dirs, files = os.walk('path')
Run Code Online (Sandbox Code Playgroud)

这也不:

(root, dirs, files) = os.walk('path')
Run Code Online (Sandbox Code Playgroud)

它总是产生:

ValueError: not enough values to unpack (expected 3, got 1)
Run Code Online (Sandbox Code Playgroud)

我发现的所有示例都os.walk嵌入os.walk在 for 循环中:

for root, dirs, files in os.walk('path'):
Run Code Online (Sandbox Code Playgroud)

为什么?这里到底要迭代什么?root是字符串,dirsfiles列表。然而,大多数示例都会再次迭代dirsfiles

for root, dirs, files in os.walk('path'):
    for name in files:
        print(name)
    for name in dirs:
        print(name)
Run Code Online (Sandbox Code Playgroud)

内部 for 循环对我来说很有意义,但我不明白外部 for 循环的用途。

为什么对 3 元组的赋值在os.walk嵌入 …

python python-3.x

1
推荐指数
1
解决办法
4495
查看次数

标签 统计

python ×2

python-3.x ×2

os.walk ×1