Python中有没有一种方法可以在不使用os.walk、glob或fnmatch的情况下递归搜索目录、子目录和文件? 我知道使用这些模块会使生活变得简单很多,但是当我学习Python时,我希望能够巩固基础,然后走上捷径。这样,当面对更大的问题时,我可以分析并解决它
我希望能够返回1个目录(如目录F)中的文件夹和文件总数:\ 我提出了:Python中有没有一种方法可以在不使用os.walk、glob或fnmatch的情况下递归搜索目录、子目录和文件? 我知道使用这些模块会使生活变得简单很多,但是当我学习Python时,我希望能够巩固基础,然后走上捷径。这样,当面对更大的问题时,我可以分析并解决它,python,python-3.x,recursion,directory,Python,Python 3.x,Recursion,Directory,我希望能够返回1个目录(如目录F)中的文件夹和文件总数:\ 我提出了: import os def fcount(path): count = 0 for f in os.listdir(path): file = os.path.join(path, f) if os.path.isdir(file): file_count = fcount(file) count += file_count + 1 for f in os.listdi
import os
def fcount(path):
count = 0
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
file_count = fcount(file)
count += file_count + 1
for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)):
count += 1
return count
path = 'F:\\'
print(fcount(path))
这是最后的答案。这将为您提供指定目录中的子目录和文件总数。如果不使用
os.walk
或使用相同内容的内容,则无法(递归)获取目录下所有文件的数量
此信息需要此作业,您不能以其他方式执行。显然,还有其他库也在做类似的工作,但有一些变化,但关键是这基本上是一样的。这是与os.walk一样的代码。这是手动递归
import os
def fcount(path):
count = 0
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
file_count = fcount(file)
count += file_count + 1
for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)):
count += 1
return count
path = 'F:\\'
print(fcount(path))
注意:最初在OP中,没有第二个循环。我会查看并从那里开始。@MartijnPieters我已经做了一些编辑和更改。这是否澄清了我的意思?那么你在这里挣扎的是什么?您遇到了什么需要解释的问题?@MartijnPieters我希望能够计算F:\目录中的所有文件,包括子文件夹。例如,我的目录中总共有50个文件夹。但在这些文件夹中,有更多的文件夹和/或文件。我希望能够计算所有文件和文件夹,并返回项目总数。对,不清楚您是否希望递归到子目录。你是怎么做到的?您是否知道递归,或者使用堆栈或队列?您是否查看了
os.walk()
源代码以了解它是如何做到这一点的?