2013-04-21 92 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