为什么os.walk没有识别我的变量名?

时间:2010-12-15 19:45:48

标签: macos terminal os.walk textwrangler

我在TextWrangler中写了以下内容:

directory = raw_input("See contents of: ") 

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

不幸的是,当我在终端中运行它并通过在Dock中键入或拖动文件夹来分配目录路径时,没有任何反应。甚至没有错误消息。另一方面,当我在TextWrangler中输入以下内容然后在终端中运行程序时,它运行正常。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  1. 像空格一样的特殊字符被转义以便在shell中使用
  2. 在目录名称
  3. 之后插入一个空格

    两者都会阻止os.walk找到路径。你没有得到错误很简单。 os.walk没有给出那个案例的错误。它根本不会迭代不存在的路径。

答案 1 :(得分: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