简体   繁体   English

为什么此递归函数在python中不起作用

[英]Why this recursive function doesn't work in python

Program for recursively printing files and directory in python #!/usr/bin/env python 在python#!/ usr / bin / env python中递归打印文件和目录的程序

import os

temp_path = os.getcwd()
path = temp_path.split("/")
print path[-1]

def recursive(wrkdir):

    for items in os.listdir(wrkdir):
        if os.path.isfile(items):
            print "---"+items

    for items in os.listdir(wrkdir):
        if os.path.isdir(items):
            print "---"+items
            #following call to recursive function doesn't work properly
            recursive("./"+items)

recursive(os.getcwd())

You need to used the absolute file/directory path when checking for file/dir using os.path.isfile or os.path.isdir : 使用os.path.isfileos.path.isdir检查文件/目录时,需要使用绝对文件/目录路径:

import os

def recursive(wrkdir):

    for item in os.listdir(wrkdir):
        if os.path.isfile(os.path.join(wrkdir, item)):
            print "--- {0}".format(items)

    for item in os.listdir(wrkdir):
        if os.path.isdir(os.path.join(wrkdir, item)):
            print "--- {0}".format(items)
            recursive(os.path.join(wrkdir, item))

recursive(os.getcwd())

try this : 尝试这个 :

def recurse(cur_dir,level=0):
    for item_name in os.listdir(cur_dir):
        item = os.path.join(cur_dir,item_name)
        if os.path.isfile(item):
            print('\t'*level+'-',item_name)
        if os.path.isdir(item):
            print('\t'*level+'>',item_name)
            recurse(item,level+1)

recurse(os.getcwd())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM