gpt4 book ai didi

python - 递归列出目录中的所有文件(Unix)

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:05 25 4
gpt4 key购买 nike

我正在尝试使用 python 递归地列出目录中的所有文件。我看到许多使用 os.walk 的解决方案。但我不想使用 os.walk。相反,我想自己实现递归。

import os
fi = []
def files(a):
f = [i for i in os.listdir(a) if os.path.isfile(i)]
if len(os.listdir(a)) == 0:
return
if len(f) > 0:
fi.extend(f)
for j in [i for i in os.listdir(a) if os.path.isdir(i)]:
files(j)


files('.')
print fi

我正在尝试学习递归。我看到了以下 Q?A,但我无法在我的代码中正确实现它。

最佳答案

os.listdir 只返回文件名(没有完整路径)所以我认为调用 files(j) 将无法正常工作。
尝试使用 files(os.path.join(dirName,j))

或者类似这样的东西:

def files(a):
entries = [os.path.join(a,i) for i in os.listdir(a)]

f = [i for i in entries if os.path.isfile(i)]
if len(os.listdir(a)) == 0:
return
if len(f) > 0:
fi.extend(f)
for j in [i for i in entries if os.path.isdir(i)]:
files(j)

我试着靠近你的结构。但是,我会在条目上只写一个循环,就像这样:

def files(a):
entries = [os.path.join(a,i) for i in os.listdir(a)]
if len(entries) == 0:
return

for e in entries:
if os.path.isfile(e):
fi.append(e)

elif os.path.isdir(e):
files(e)

关于python - 递归列出目录中的所有文件(Unix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25359067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com