python - 如何使递归工作以显示所有目录及其子目录?
问题描述
在这段代码中,我想打印所有目录及其子目录等。我为此使用了递归。但它给了我以下错误?
错误
Traceback (most recent call last):
File "main.py", line 20, in <module>
filesystem("/home/runner/TestP1")
File "main.py", line 17, in filesystem
filesystem(dirs)
File "main.py", line 11, in filesystem
dirfiles = os.listdir(dirname)
TypeError: listdir: path should be string, bytes, os.PathLike, integer or None, not list
代码
import os
def filesystem(dirname):
dirfiles = os.listdir(dirname)
fullpaths = map(lambda name: os.path.join(dirname, name), dirfiles)
dirs = []
for file in fullpaths:
if os.path.isdir(file): dirs.append(file)
filesystem(dirs)
print(list(dirs))
filesystem("/home/runner/TestP1")
解决方案
替换filesystem(dirs)
为:
for dirname in dirs:
filesystem(dirs)
另请注意:
- 在 2021 年,您应该使用pathlib。尤其
glob
是令人难以置信的有用。 - 在 Linux 中,请注意符号链接/硬链接,这可能很容易导致无限递归。
推荐阅读
- ballerina - 使用 MySQL 驱动程序的 Ballerina docker 映像 - 如何
- jquery - 我正在尝试在 Spring Boot 中使用 webjars,但我得到 ERR_ABORTED 404
- javascript - 在 Javascript 中更改 CSS 显示样式
- javascript - 用括号 [ 替换 JSON 数组引号
- c# - 以编程方式创建 Azure DevOps 工件
- javascript - 是否有一个java脚本代码来动画具有一定宽度的垂直黑条在白色背景上移动?
- python - 如何从隐藏的跨度类 HTML 中抓取链接?
- c++ - 使用数组的链表实现
- php - PHP 变量未按应有的方式显示
- r - 闪亮的部署错误(以代码 1 退出)。我将如何解决这个问题?