os.walk不走路

joc*_*oce 3 python

在摆弄尝试自动化某个过程的同时,我遇到了Python的这种看似非常奇怪的行为os.walk():当我将它传递给某个目录时,它只是没有做任何事情.但是,当我传递父目录时,它在直接传递似乎不起作用的路径中正确递归.

例如:

for root, _, _ in os.walk('F:\music'):
    print(root)
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

F:\ music
[...]
F:\ music\test
F:\ music\test\broken
F:\ music\test\broken\Boards_Of_Canada
F:\ music\test\broken\Brian_Eno
[...]

但是,当我尝试使用F:\ music\test(os.walk()在其父级调用时被正常递归),如下所示:

for root, _, _ in os.walk('F:\music\test'):
    print(root)
Run Code Online (Sandbox Code Playgroud)

我根本没有得到任何输出.

有人知道发生了什么事吗?难道我做错了什么?这是一些奇怪的限制os.walk()吗?我真的很困惑.

bgp*_*ter 20

你的问题在这里:

 for root, _, _ in os.walk('F:\music\test'):
     print(root)
Run Code Online (Sandbox Code Playgroud)

...当Python解析包含您的路径的字符串时,它会将其解释\t为Tab字符.您可以将路径字符串文字重写'f:\\music\\test'r'F:\music\test'(或原始字符串,因为这个原因而存在.)

  • 这是讨厌窗户的一个原因. (6认同)

Tyl*_*ves 7

您应该始终在路径中使用正斜杠而不是反斜杠,即使在窗口上也是如此.发生的事情是\ t被解释为一个标签,而不是斜线.