Search code examples
pythonrecursionstorage

how to preserve values in a recorsive function in python


the function must define the recursive function (or using your own recursive function) es68(dir, extensions), which must count how many files of certain types are in a directory or in one of its subdirectories, and which receives as arguments:

dir: the path to the directory to search extensions: extensions (the last letters of the name of the files we are looking for)

import os
import os.path
def es68(dir, estensioni): 

    c = 0
    for name in os.listdir(dir):
        if name.startswith('.'): continue
        if estensioni in name:
            c += 1            
        pathname = os.path.join(dir, name)
        if os.path.isdir(pathname): 
            es68(pathname, estensioni)
    return c

I expect the function to return me the number of times it encounters the extension. the problem is that every time the recursion is done the variable 'c' is reset to 0 and i don't know how to fix this. I would like the variable 'c' every time it increases by 1 to not reset

without changing the inputs of the function, it must be just dir and estensioni


Solution

  • You can accumulate the result of the recursive call back into c:

    if os.path.isdir(pathname): 
        c += es68(pathname, estensioni)