python os:获取某个目录下的所有绝对文件路径

时间:2017-01-18 23:05:29

标签: python operating-system os.walk

我有以下文件夹结构:

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

我正在尝试使用相对于当前工作目录(桌面)的路径返回所有文件。根据我上面的例子,我想:

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

1 个答案:

答案 0 :(得分: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)

编辑:添加os.path.relpath以提供相对路径而不是绝对路径。请参阅this answer