1

我在 TextWrangler 中写了以下内容:

directory = raw_input("See contents of: ") 

for root, dirs, files in os.walk(directory):
   print root, dirs, files

不幸的是,当我在终端中运行它并通过从扩展坞中键入或拖动文件夹来分配目录路径时,什么也没有发生。甚至没有错误消息。另一方面,当我在 TextWrangler 中输入以下内容然后在终端中运行该程序时,它工作正常。

for root, dirs, files in os.walk("/Users/paulpatterson/Documents/Python"):
print root, dirs, files

那么我的问题是,为什么 os.walk 不接受变量形式的路径。我正在使用的书建议它应该这样做,就像我在试图解决这个问题时在网上看到的大多数示例一样。

4

2 回答 2

2

只需print directory在循环之前查看您真正获得的路径。这就是问题所在,而不是os.walk不接受变量。

当您将 OSX 下的文件夹放入终端时:

  1. 特殊字符(如空格)被转义以在 shell 中使用
  2. 在目录名后插入一个空格

两者都会阻止 os.walk 找到路径。你没有收到错误很简单。os.walk 在这种情况下没有给出错误。它根本不会遍历不存在的路径。

于 2010-12-15T19:53:42.683 回答
0

不幸的是,当我在终端中运行它并通过从扩展坞中键入或拖动文件夹来分配目录路径时,什么也没有发生。

正如你所说,我已经尝试过,将文件夹拖到我的终端(我在 Linux 上),它会显示用引号括起来的路径。

raw_input在您应该解决问题后删除引号

import os

directory = raw_input("See contents of: ")
directory = directory.strip()
if directory[0] == "'" and directory[-1] == "'":
    directory = directory[1:-1]

print directory

for root, dirs, files in os.walk(directory):
   print root, dirs, files
于 2010-12-15T19:57:08.340 回答