我想索引150个文件,以便os.walk
仅在浏览150个文件后终止。
例如:
假设要编入索引的第一个文件夹有20个文件,第二个30,第4个,第10个,第120个,第6个22个,'walk'应该聚合所有文件夹中的总数,因为它经过每个文件夹直到总和达到150,然后终止。
这不起作用:
import os
from os.path import join, getsize
i = 0
while i <= 150:
print(i)
for root, dirs, files in os.walk('D:/'):
i += 1
for f in files:
print(f, 'ROOT: ', root, 'DIR: ', dirs)
请帮忙。谢谢大家。
答案 0 :(得分:3)
您需要测试文件编号 os.walk()
循环:
i = 150
for root, dirs, files in os.walk('D:/'):
if i <= 0:
break
for f in files[:i]:
i -= 1
print(f, 'ROOT: ', root, 'DIR: ', dirs)
我使用了files
的切片来简化测试,因为break
只会结束最内部的活动循环。通过倒计时,切片操作有点简化。
过度切片files
完全合法;如果只有20个项目切片到150返回只有20项可用。在此期间,i
减少了20,因此下一个文件夹最多可以处理130个文件等。
答案 1 :(得分:2)
i = 0
j=0
for root, dirs, files in os.walk('D:/'):
i += 1
if i > 150: #this is 150 folders (not files)
break
for f in files:
j+= 1
if j > 150: #this is 150 files
i=151 # force exit the outer loop
break
print(f, 'ROOT: ', root, 'DIR: ', dirs)