首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os.walk不走路

os.walk不走路
EN

Stack Overflow用户
提问于 2011-03-08 14:28:29
回答 4查看 12K关注 0票数 3

在尝试自动化某些进程时,我遇到了Python的os.walk()的这个看似非常奇怪的行为:当我传递给它某个目录时,它什么也不做。但是,当我传递父目录时,它在直接传递时似乎无法工作的路径中正确地递归。

例如:

代码语言:javascript
复制
for root, _, _ in os.walk('F:\music'):
    print(root)

产生以下输出:

F:\音乐

..。

F:\音乐测试

F:\音乐\测试\破碎

F:\music\test\broken\Boards_Of_Canada

F:\music\test\broken\Brian_Eno

.

但是,当我尝试使用F:\music\test (当它的父级调用os.walk()时,它被很好地递归)时,它是这样的:

代码语言:javascript
复制
for root, _, _ in os.walk('F:\music\test'):
    print(root)

我一点也没得到任何输出。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-08 14:32:00

你的问题是:

代码语言:javascript
复制
 for root, _, _ in os.walk('F:\music\test'):
     print(root)

...when解析包含路径的字符串,它将\t解释为Tab字符。您可以将路径字符串文字重写为'f:\\music\\test',也可以重写为r'F:\music\test' (一个原始字符串,正因为这个原因而存在)。

票数 21
EN

Stack Overflow用户

发布于 2011-03-08 14:31:57

您应该始终使用正斜杠,而不是在路径中使用反斜杠,即使在窗口上也是如此。所发生的是\t被解释为一个制表符,而不是斜杠。

票数 7
EN

Stack Overflow用户

发布于 2016-10-05 02:37:02

您最好使用os.path.normpath,并使用任何斜杠和反斜杠(无论多少),这样不仅可以解决问题,而且还可以使您的代码在这一点上跨越平台。

对于根,_,_ in os.walk(os.path.normpath('F:/music/test')):

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5233814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档