2011-02-23 55 views
3

我正在構建一個Python ISO生成應用程序,並且我從os.path.isdir()獲得了一些更奇怪的輸出。我使用Python 2.7.1運行Arch Linux。Python 2.7.1:os.path.isdir()的輸出不一致()

我有以下文件夾結構:

/家庭/安德魯/ create_iso/Raw_Materials/
/家庭/安德魯/ create_iso/Raw_Materials/test_cd/

[[email protected] Raw_Materials]$ ls -l total 4 drwxr-xr-x 3 andrew andrew 4096 Feb 23 10:20 test_cd

正如你所看到的, test_cd /是一個普通的Linux文件夾。但是,當我運行os.path.isdir()時,根據它是否是for循環的一部分或者是否對其進行硬編碼,我得到了不同的結果。

import os 
>>>for folders in os.listdir('/home/andrew/create_iso/Raw_Materials/'): 
... os.path.isdir(folders) 
False 

>>>os.path.isdir('/home/andrew/create_iso/Raw_Materials/test_cd') 
True 

我想也許有在我從os.listdir()獲取輸出什麼奇怪的,但似乎也看看:

>>>os.listdir('/home/andrew/create_iso/Raw_Materials/') 
['test_cd'] 

任何想法,爲什麼它處理這些案件不同?提前致謝。

回答

5

'test_cd'本身不是一個目錄。您需要執行os.path.join以獲取目錄的絕對路徑,然後在該目錄上調用isdir

+0

D'oh!謝謝。 – andrewd18 2011-02-23 21:28:29

+0

這有點令人困惑,但它是有道理的 - test_cd實際上只是一個沒有目錄樹元數據的字符串。 – 2011-02-23 21:29:00

4

您需要將文件夾附加到'/ home/andrew'路徑。

1

它尋找test_cd在當前目錄中,而不是在你與os.listdir讀取目錄。當前目錄可能與包含腳本的目錄相同,並且可能不包含名爲test_cd的項目。 os.path.isdir()當文件未找到時返回False以及當文件存在但不是目錄時。正如其他人所說的,使用os.path.join()來構建完整路徑。