Python os.walk不';t步行

Python os.walk不';t步行,python,Python,在尝试自动化某些过程时,我遇到了Python的os.walk():当我向它传递某个目录时,它什么也不做。但是,当我传递父目录时,它会在直接传递时似乎不起作用的路径中正确递归 例如: for root, _, _ in os.walk('F:\music'): print(root) 生成以下输出: F:\music […] F:\music\test F:\music\test\breaked F:\music\test\break\Boards\u Of_Canada F:\musi

在尝试自动化某些过程时,我遇到了Python的
os.walk()
:当我向它传递某个目录时,它什么也不做。但是,当我传递父目录时,它会在直接传递时似乎不起作用的路径中正确递归

例如:

for root, _, _ in os.walk('F:\music'):
    print(root)
生成以下输出:

F:\music
[…]
F:\music\test
F:\music\test\breaked
F:\music\test\break\Boards\u Of_Canada
F:\music\test\break\Brian\u Eno
[…]

但是,当我尝试使用F:\music\test时(在其父级上调用
os.walk()
时,它以很好的方式递归),如下所示:

我根本没有得到任何输出


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

即使在windows上,在路径中也应该始终使用正斜杠而不是反斜杠。发生的情况是\t被解释为一个制表符,而不是斜线t形符号。

您的问题在于:

 for root, _, _ in os.walk('F:\music\test'):
     print(root)

…当Python解析包含路径的字符串时,它将
\t
解释为制表符。您可以将路径字符串文字重写为
'f:\\music\\test'
r'f:\music\test'
(一个原始字符串,正是因为这个原因而存在。)

您最好使用os.path.normpath,并使用您喜欢的任何斜杠和反斜杠(任意数量) 这不仅有助于解决您的问题,还将使您的代码跨平台


对于root,os.walk(os.path.normpath('F:/music/test')中的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 打印(根) 打印(目录) 打印(文件)


Windows路径与“\\”一起工作

当您使用
/
(正斜杠)作为路径分隔符时,是否会发生相同的行为?这是讨厌windows的原因之一。直到您遇到
\\?\
并且正斜杠不再起作用。批处理的
DEL
命令也是如此,在路径中使用前斜杠时,该命令在我身上失败。
 for root, _, _ in os.walk('F:\music\test'):
     print(root)