【发布时间】:2016-07-31 20:42:16
【问题描述】:
这是我尝试做的事情: 我想获取 C 盘中所有大于 35 MB 的文件的列表。
这是我的代码:
def getAllFileFromDirectory(directory, temp):
files = os.listdir(directory)
for file in files:
if (os.path.isdir(file)):
getAllFileFromDirectory(file, temp)
elif (os.path.isfile(file) and os.path.getsize(file) > 35000000):
temp.write(os.path.abspath(file))
def getFilesOutOfTheLimit():
basePath = "C:/"
tempFile = open('temp.txt', 'w')
getAllFileFromDirectory(basePath, tempFile)
tempFile.close()
print("Get all files ... Done !")
由于某种原因,解释器没有进入“getAllFileFromDirectory”内的 if 块。
谁能告诉我我做错了什么以及为什么(学习是我的目标)。如何解决?
非常感谢您的 cmets。
【问题讨论】:
-
我尝试在本地运行该代码(在 UNIX 系统上使用
/而不是C:/),它运行良好,只是碰巧没有一个文件大于 35 MB在那个目录中。您确定C:/内有超过 35MB 的文件吗?您的代码只会直接分析C:/文件夹中的文件,而不是递归遍历它以查看驱动器中的所有文件。 -
@DavidGomes:你确定最后那句话吗?根据该函数,它应该为文件夹递归调用自身。
-
是的,我错了。你应该这样做
os.path.isdir(directory + file)然后因为os.path.isdir只有在你给它完整路径的情况下才能知道它是否是一个目录。
标签: python windows python-2.7 python-3.x