2009-04-08 28 views

回答

5

沒有內置的功能,只列出的文件,但它是很容易做到的幾行來定義:

def listfiles(directory): 
    return [f for f in os.listdir(directory) 
       if os.path.isdir(os.path.join(directory, f))] 

編輯:固定,感謝Stephan202

3

如果a_directory是要檢查的目錄,然後:

next(f 1 for f in os.walk(a_directory))

從參考:

通過遍歷樹生成的目錄樹中的文件名自上而下或自下而上。對於根目錄頂部(包括頂部本身)樹中的每個目錄,它會生成一個3元組(dirpath,dirnames,文件名)。

+0

+1:雖然,你可能想打破並不遞歸地進入子目錄。就個人而言,我更願意明確地調用os.listdir和os.isdir。 – Pankrat 2009-04-08 20:06:37

+0

如果更改了代碼。這將不會遞歸... – Stephan202 2009-04-08 20:08:46

1

我不相信有。由於目錄也是文件,你必須要求所有的文件,然後詢問每個文件是否是目錄。

0
def listdirs(path): 
    ret = [] 
    for cur_name in os.listdir(path): 
     full_path = os.path.join(path, cur_name) 
     if os.path.isdir(full_path): 
      ret.append(cur_name) 
    return ret 

onlydirs = listdir("/tmp/") 
print onlydirs 

..或者作爲一個列表理解..

path = "/tmp/" 
onlydirs = [x for x in os.listdir(path) if os.path.isdir(os.path.join(path, x))] 
print onlydirs 
相關問題