在Python中递归扫描文件和目录
我想要完全扫描一个文件夹,看看里面有什么子文件或子文件夹……
我知道可以用 os.walk()
这个方法,但我想知道用普通的循环怎么做到,是否可行?
我的意思是,如果:
for item in directory :
if os.path.isdir(item)
...
但是上面的代码只能根据你手动写的循环层数,深入到文件夹的不同层级,这样看起来不太完美,也有点奇怪。
我问这个问题是想知道有没有什么技巧(除了内置函数)可以递归地深入到文件夹里的最深处……
1 个回答
0
当然,你可以写一个递归函数来检查所有的文件:
def rec_walk(dir):
contents = os.listdir(dir) # read the contents of dir
for item in contents: # loop over those contents
if os.path.isdir(item):
rec_walk(item) # recurse on subdirectories
else:
print(item) # do something else with non-directory items
如果你想从非目录文件中收集信息(而不仅仅是像我上面那样打印它们的名字),你可能需要处理一下递归调用的返回值。具体的做法会根据你想要做的事情而有所不同。