2010-12-15 121 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

相關問題