2010-12-15 69 views
0

我已经写在了的TextWrangler如下:为什么os.walk不能识别我的变量名?

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不接受一个变量形式的路径。我正在使用的书 表明它应该像我在网络上看到的大多数例子一样,试图对此进行分类。

回答

2

只需print directory循环之前,看看你真正得到什么路径。这是问题,而不是os.walk不接受变量。

当你OSX下删除一个文件夹到终端:

  1. ,如空格特殊字符得到外壳
  2. 一个空间的目录名称

两个后插入逃过使用将阻止os.walk找到路径。你没有得到一个错误很简单。 os.walk不会给出这种情况的错误。它不会遍历不存在的路径。

+0

感谢后删除引号,现在的作品。已经完成了'打印目录',但没有发现最后的空间。 – 2010-12-15 20:22:17

+0

+1 OP说,“现在有效”,我真的需要知道这是关于什么吗? – 2010-12-15 23:57:44

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 
+0

行情似乎不是这里的问题。当文件夹拖入终端时,OSX上不显示引号。它看起来像路径末尾增加的空间是问题。 – 2010-12-15 20:26:32

+0

好的,很高兴知道它在Linux和OSX上有不同的行为 – ccheneson 2010-12-15 20:27:56

相关问题