How to do a recursive sub-folder search and return files in a list?

You should be using the dirpath which you call root. The dirnames are supplied so you can prune it if there are folders that you don’t wish os.walk to recurse into. import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == ‘.txt’] Edit: After the latest … Read more

Does Python optimize tail recursion?

No, and it never will since Guido van Rossum prefers to be able to have proper tracebacks: Tail Recursion Elimination (2009-04-22) Final Words on Tail Calls (2009-04-27) You can manually eliminate the recursion with a transformation like this: >>> def trisum(n, csum): … while True: # Change recursion to a while loop … if n … Read more

Recursively list files in Java

Java 8 provides a nice stream to process all files in a tree. Files.walk(Paths.get(path)) .filter(Files::isRegularFile) .forEach(System.out::println); This provides a natural way to traverse files. Since it’s a stream you can do all nice stream operations on the result such as limit, grouping, mapping, exit early etc. UPDATE: I might point out there is also Files.find … Read more

Is recursion ever faster than looping?

This depends on the language being used. You wrote ‘language-agnostic’, so I’ll give some examples. In Java, C, and Python, recursion is fairly expensive compared to iteration (in general) because it requires the allocation of a new stack frame. In some C compilers, one can use a compiler flag to eliminate this overhead, which transforms … Read more