2013-10-11 6 views
6

Я хотел бы получить список всех файлов в каталоге рекурсивно, без каталогов.Рекурсивный os.listdir?

Скажите, что есть каталог ~/files с «a.txt», «b.txt» и каталог «c» с «d.txt» и «e» внутри него и «f.txt» внутри e. Как я могу получить список, который выглядит как ['/home/user/files/a.txt', '/home/user/files/b.txt', '/home/user/files/c/d.txt', '/home/user/files/c/e/f.txt']?

+0

пути к '' d.txt' и f.txt', который вы указали, не существует, так что ... – roippi

+0

@roippi фиксированной, спасибо – tkbx

+0

Смотрите второй ответ в следующем и просто удалить print dir_names http://stackoverflow.com/questions/4918458/how-to-traverse-through-the-files-in-a-directory – davecom

ответ

22
import os 
[os.path.join(dp, f) for dp, dn, fn in os.walk(os.path.expanduser("~/files")) for f in fn] 
+4

Заменить '' ~/files "' с 'os.path.expanduser (" ~/files ")'. В противном случае он найдет буквенный '~' каталог вместо домашнего каталога. – falsetru

+0

@falsetru, хороший пункт. благодаря –

Смежные вопросы