【发布时间】:2016-11-21 14:14:46
【问题描述】:
我在尝试确定驱动器中文件夹的大小时遇到了无限循环。这是我正在使用的代码,
import os
from os.path import join, getsize
from sys import exit
filepath="P:\\GIS\\Data"
dirList=os.listdir(filepath)
for fname in dirList:
for root, dir, files in os.walk(filepath):
print root , sum([getsize(join(root, name)) for name in files]),
print "bytes in", len(files), "non-directory files"
print "All finished!"
我已尝试将结果保存在变量中,但循环甚至没有到达该步骤并开始无限循环请您告诉我哪里出了问题?
【问题讨论】:
-
它循环播放什么?你能看到文件何时开始重复吗?
-
印刷品应该是第二个循环的一部分吗?
-
为什么你认为它是无限循环而不是长时间的计算操作?您在这个目录中有多少个文件?
-
我可能是错的,但我不认为你是无限循环的。我认为你在重复自己。我认为你想要 `for root, dir, files in os.walk(fname)' 虽然你可能希望在 try except 块中捕获它是否是一个文件
-
知道您的任何目录中是否存在指向其上方目录的符号链接?这是我看到你陷入循环的唯一方法,但我不确定
os.walk是否默认遵循符号链接。