Python循环遍历目录中的文件,然后列出

时间:2016-12-24 02:17:05

标签: python loops

我正在尝试遍历目录中的文件并列出每个文件的路径。 我的代码遍历每个文件但列出了错误的目录。返回完整目录我错过了什么?

到目前为止,这是我的代码:

import os

directory = "posts/"

for file in os.listdir(directory):
    if file.endswith(".md"):
        dir = os.path.abspath(file)
        print "The Path is: " + str(dir)

结构是这样的:

.
├── app.py
└── posts
    ├── first.md
    └── second.md

终端输出(缺少目录的/posts/部分):

The Path is: /home/tc/user/python-md-reader/second.md
The Path is: /home/tc/user/python-md-reader/first.md

2 个答案:

答案 0 :(得分:3)

如果你看一下源代码:

def abspath(path):
    """Return the absolute version of a path."""
    if not isabs(path):
        if isinstance(path, unicode):
            cwd = os.getcwdu()
        else:
            cwd = os.getcwd()
        path = join(cwd, path)
    return normpath(path)         # normpath according to the comment 
                                  # """Normalize path, eliminating double slashes, etc."""

abspath所做的只是使用您提供的path加入当前工作目录,因为您只将文件作为路径提供,并且您只是posts的一级目录它将被忽略。

答案 1 :(得分:1)

您可以将目录放回路径:

dir = os.path.abspath(os.path.join(directory, file))