我还在上python的入门课程。我正在尝试编写一个程序,它使用递归返回目录中所有文件名的列表,但由于某些原因,它不能按预期工作。这是我的密码:谢谢
from pathlib import Path
p = Path('/Users/name/Documents/')
def directory_files (dirct: Path) -> list:
Lf = []
if dirct.is_file:
Lf.append(dirct)
else:
for d in list(dirct.iterdir()):
directory_files(d)
return Lf
你忘了调用
is_file
,如果你想用文件填充你的列表,你需要检查dirct
是否是一个目录,不是一个文件并不意味着它就是一个目录。您也可以简单地扩展每个元素上的递归列表:演示:
如果只需要名称,请使用.name属性:
演示:
is_file
和is_dir
一样,都是需要调用的方法,if dirct.is_file
正在检查作为方法引用的dirct.is_file
是否是True
,这总是这样,parenis_file()
实际调用方法,然后返回布尔值。你知道吗如果要显式检查文件,还需要添加
is_file
,例如,命名管道不是目录,但不会通过is_file
测试,因此:您可以看到输出中的差异:
您可能会发现rcviz是一个很好的工具,可以帮助您理解递归,它可以创建一个图形,其中:
这些边按照执行遍历它们的顺序进行编号。2边的颜色从黑色到灰色表示遍历顺序:黑色边优先,灰色边最后。
这是一个有点难以看到这里,但如果你点击图像,它应该使它更容易看到。你知道吗
相关问题 更多 >
编程相关推荐