使用os.listdir()的Python递归函数

时间:2018-03-14 09:14:17

标签: python-2.7 listdir

我试图通过使用os.listdir()来创建一个递归函数,我正在循环遍历所有目录并列出所有文件和目录。
我知道使用os.tree()来解决这类问题会更​​好,但我想看看如何使用os.listdir()来解决这个问题。 这是我目前的代码:

#!/bin/usr/py
from os.path import abspath
from os.path import isfile, isdir
import os
import sys

dir = sys.argv[1]

def recursive(dir):
    files = os.listdir(dir)
    for obj in files:
        if isfile(obj):
            print obj
        elif isdir(obj):
            print obj
            recursive(abspath(obj))

#no idea why this won't work???
recursive(dir)

2 个答案:

答案 0 :(得分:1)

您的问题来自abspath(obj),请尝试将其替换为os.path.join(dir, obj)以获得您的obj的真实路径(我在我的环境中测试过它)

答案 1 :(得分:0)

感谢加百利和埃米尔!这正是我要从一个为我的项目之一提供的父目录中递归获取文件列表的目的。只是将更新的代码留给以后需要的人。

#!/ bin / usr / py 导入操作系统 导入系统

dir = sys.argv [1]

def递归(dir): 文件= os.listdir(dir) 用于文件中的obj:

MATCH (:Node)-[r:RELATIONSHIP]->(tail:Node)
WHERE REDUCE(s = 0, v IN r.list | s + v) > 0
RETURN tail

递归(dir)