Python 如何生成用于构建列表的递归函数
获取递归函数以构建返回列表的好方法是什么?假设我有一个如下函数,用于生成所有子目录中的文件和目录列表:Python 如何生成用于构建列表的递归函数,python,list,recursion,Python,List,Recursion,获取递归函数以构建返回列表的好方法是什么?假设我有一个如下函数,用于生成所有子目录中的文件和目录列表: def print_directory_listing(directory = "."): for file_structure in os.listdir(directory): file_structure_path = os.path.join(directory, file_st
def print_directory_listing(directory = "."):
for file_structure in os.listdir(directory):
file_structure_path = os.path.join(directory, file_structure)
if os.path.isdir(file_structure_path):
print_directory_listing(file_structure_path)
else:
print(file_structure_path)
我如何修改它以返回所有文件和目录的列表,而不是打印所有内容?例如,如果有一个函数附加文件的全局列表,这会好吗
请注意,我不是在询问有关
os.walk
的详细信息;我想问一个一般性的问题,即用什么样的python方法来获得一个递归函数来构建并返回一个列表。感谢您的评论,我想我已经理解了您问题的真正目的。如果你看一下下面的代码,你会发现你正在寻找的递归,你会看到如何“保存child的变量”
感谢你的评论,我想我已经理解了你问题的真正目的。如果你看一下下面的代码,你会发现你正在寻找的递归,你会看到如何“保存child的变量”
为什么不使用
os.walk()
这正是为了达到这个目的?@Kasramvd为什么不回答而不是评论,因为这肯定是一个答案?@Loïc因为这个问题是重复的。@Kasramvd我的问题不是关于创建目录列表;它是关于如何获得一个递归函数来构建一个列表并返回该列表。我提到的目录列表完全是偶然的。这不是一个演示任务的好例子,你最好通过提供一个。作为提示,您还可以看到os.walk()
函数的源代码,该函数使用递归方法,为什么您不使用正是为了这个目的而使用的os.walk()
,因为这肯定是一个答案?@Loïc,因为这个问题是重复的。@Kasramvd我的问题不是关于创建目录列表;它是关于如何获得一个递归函数来构建一个列表并返回该列表。我提到的目录列表完全是偶然的。这不是一个演示任务的好例子,你最好通过提供一个。作为提示,您还可以看到使用递归方法的os.walk()
函数的源代码。谢谢您的解决方案。我的问题不是特别关于创建目录列表;这是关于如何获得一个递归函数来构建一个列表并返回该列表。我有一个示例代码供您使用,我无法为这个问题添加答案。关门了。你会问一个新问题吗?@d3pd我刚刚更新了我的答案谢谢你的解决方案。我的问题不是特别关于创建目录列表;这是关于如何获得一个递归函数来构建一个列表并返回该列表。我有一个示例代码供您使用,我无法为这个问题添加答案。关门了。你会问一个新问题吗?@d3pd我刚刚更新了我的答案
import os
def print_directory_listing(directory = '.'):
files_list=[]
for file_structure in os.listdir(directory):
file_structure_path = os.path.join(directory, file_structure)
if os.path.isdir(file_structure_path):
files_list+=print_directory_listing(file_structure_path)
else:
files_list.append(file_structure_path)
return files_list