2013-04-21 68 views
1

简单代码:蟒蛇:E盘的os.walk不起作用

import os 

filenamelist = [] 
#path = "E:\blah\blah\blah" 
path = "C:\Program Files\Console2" 
for files in os.walk(path): 
    filenamelist.append(files) 
    print files 

上述作品。但是,当我设置path =“E:\ blah \ blah \ blah”脚本运行但不返回任何内容。

1) C:\Users\guest>python "read files.py" 

('C:\\Program Files\\Console2', [], ['console.chm', 'Console.exe', 'console.xml', 'ConsoleHook.dll', 'FreeImage.dll', 'FreeImagePlus.dll']) 

2) C:\Users\guest>python "read files.py" 

C:\Users\guest> 

任何想法为什么os.walk()与E:\困难的时间?我无法在E:上阅读任何内容。我有一个外部驱动器映射到E驱动器。

+0

好问题。在Linux上btw整个文件系统是走与os.walk('/'),但在Windows上,我一次只能走一个驱动器(C:\,D:\ etc) – Johnny 2013-04-21 18:57:46

+0

如果你的路径是E:\ blah \ blah \ blah,你需要在B之前逃避反斜杠。即使不是,无论如何,最好避免它们。 – 2013-04-21 18:59:36

+0

我知道你给了“E:\ blah \ blah \ blah”作为你的例子,但也许真正的道路上有些特殊字符会引发问题。你能列出真正的道路吗? – 2013-04-21 19:02:09

回答

4

这可能是因为python将\作为转义符号,并且您有一个真正的E:磁盘路径转义符号组合。

  1. 原始字符串字面量:

    它可能通过以下方式之一来解决r"E:\blah\blah\blah"(反斜线不被视为逃逸符号)。

  2. 双反斜杠:"E:\\blah\\blah\\blah"(转义符号会自行转义)。
  3. 斜杠"E:/blah/blah/blah"(这也适用于Windows)。
+0

谢谢Alexey!这工作。 :) – codingknob 2013-04-21 20:21:22