Python对lis中的每个元素调用递归函数

2024-09-28 20:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理这个名为traverseDir的递归函数,在这里之前一切都很顺利,我不知道如何遍历列表并对列表中的每个元素调用我的traverseDir函数。如果你能帮忙的话,非常感谢!你知道吗

path = sys.argv[1]

def traverseDir(path):

    allFile = 0
    someFile = 0

    if os.path.isfile(path): # base case
        print(sys.argv[0])
        allFile += 1
        if path.endswith('.some'):
            someFile += 1

    else:
        files = os.listdir(path)
        return files

        #if len(files[0]) <= 1: these 2 lines are where I can't figure out
         #   return traverseDir(item)

Tags: path函数元素列表returnifosdef
2条回答

一个名为^{}的内置函数已经做到了这一点。但是,为了回答您的问题,您需要遍历files列表。您还需要通过递归向下传递all_filessome_files,这样它们就可以在运行时累积起来。您还需要返回all_filessome_files(python允许您以元组的形式返回多个值)。然后可以为all_filessome_files添加递归返回的值。你知道吗

def traverseDir(path, all_files=0, some_files=0):
    # ... your existing code

    files = os.listdir(path)
    for f in files:
        # extend the path
        full_path = os.path.join(path, f)

        # unroll the returned values from the recursion
        rec_all_files, rec_some_files = traverseDir(full_path, all_files, some_files)
        # accumulate the values
        all_files += rec_all_files
        some_files += rec_some_files

    return all_files, some_files

这将对列出的每个文件调用traverseDir()。反过来,该递归将对它列出的每个文件调用traverseDir()。你知道吗

操作系统列表目录

import sys
import os

path = sys.argv[1]


def traverseDir(path):
    allFile = 0
    someFile = 0
    if os.path.isfile(path):
        allFile += 1
        if path.endswith('.some'):
            someFile += 1
    else:
        for file in os.listdir(path):
            agAllFile, agSomeFile = traverseDir(os.path.join(path, file))
            allFile += agAllFile
            someFile += agSomeFile
    return allFile, someFile

print traverseDir(path)

os.步行

import sys
import os

path = sys.argv[1]


def traverseDir(path):
    files = [file for dirFiles in os.walk(path) for file in dirFiles[2]]
    return len(files), len([file for file in files if file.endswith('.some')])

print traverseDir(path)

相关问题 更多 >