2012-03-29 52 views
3

所以我敢肯定,這是一個愚蠢的問題,但我已經通過Python的文檔看起來並試圖一對夫婦的谷歌代碼和他們沒有工作過。我有3個項目:1文件夾「[文件夾]」,1文件「測試」(沒有擴展名),1文件「測試」(沒有擴展名),1文件「測試」和1個文件「test.py」。區分文件從目錄

我期待有一個腳本,可以區分文件的文件夾了一堆功能,但我想不出任何工作。

#!/usr/bin/python 
import os, re 
for f in os.listdir('/foo/bar'): 
    print f, os.path.isdir(f) 

目前返回的一切錯誤。

+0

看到這個問題:http://stackoverflow.com/q/3761473/69772 – Andaris 2012-03-29 16:44:14

回答

6

這是因爲listdir()返回/foo/bar的文件的名稱。當你以後在其中的一個做os.path.isdir(),操作系統認爲它相對於該當前工作目錄這可能是你的腳本中,不/foo/bar目錄,它可能不包含指定名稱的目錄。不存在的路徑不是目錄,因此isdir()返回False.

使用完整的路徑名。最好的方法是使用os.path.join,例如os.path.isdir(os.path.join('/foo/bar', f))

2

您可能需要使用os.walk來代替。

所以,你可以這樣做:

import os 

root, dirs, files = next(os.walk('/foo/bar')) 

print 'directories:', dirs 
print 'files:', files