2017-01-18 12 views
0

I имеет следующую структуру папок:Python ОС: получить все абсолютные пути к файлам при определенной директории

Desktop 
├── dir1 
│   ├── dir2 
│   │   └── file4.pdf 
│   ├── file2.pdf 
│   └── file3.pdf 
└── file1.pdf 

Я пытаюсь вернуть все файлы с их путями относительно текущего рабочего каталога (Desktop). Основываясь на моем примере выше, я хочу:

Desktop/file1.pdf 
Desktop/dir1/file2.pdf 
Desktop/dir1/file3.pdf 
Desktop/dir1/dir2/file4.pdf 

Это то, что я до сих пор, но это не признавая вложенные директории:

import os 
for dirpath, dirnames, filenames in os.walk('/Users/Me/Desktop'): 
    for file in filenames: 
     print os.path.abspath(file) 

# /Users/Me/Desktop/file1.pdf 
# /Users/Me/Desktop/file2.pdf 
# /Users/Me/Desktop/file3.pdf 
# /Users/Me/Desktop/file4.pdf 

ответ

2

filenames это просто список имен файлов, и не сохраняет информацию о каталоге. Это происходит от dirpath, который вы игнорируете на данный момент.

import os 
for dirpath, dirnames, filenames in os.walk('/Users/Me/Desktop'): 
    for file in filenames: 
     print os.path.join(os.path.relpath(dirpath, '/Users/Me/Desktop'), file) 

Edit: добавлена ​​os.path.relpath давать относительные, а не абсолютные пути. См. this answer.

+1

Thos дает ему абсолютные пути, которые еще предстоит сделать, чтобы получить относительные пути, по просьбе OP. –

+0

Получил это сейчас. Большое спасибо –

+1

Хорошая точка @SimonFromme - отредактирована – gandaliter