下面是我尝试做的: 我想获取C驱动器中所有重量超过35 MB的文件的列表。从我的C驱动器获取所有文件 - Python
这里是我的代码:
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 !")
出于某种原因,解释不会在if块中去“getAllFileFromDirectory”。
有人能告诉我我做错了什么,为什么(学习是我的目标)。如何解决它?
非常感谢您的意见。
我试着在本地运行该代码(在UNIX系统上,所以用'/'而不是'C:/'),它运行得很完美,它恰巧发生的情况是没有一个文件大于35 MB在那个目录中。你确定你有超过35MB的文件,在'C:/'里面?您的代码只会直接在'C:/'文件夹内分析文件,而不是递归地遍历它以查看驱动器中的所有文件。 –
@DavidGomes:你确定最后的陈述吗?根据该函数,它应该为文件夹递归调用自身。 – usr2564301
是的,我错了。你应该执行'os.path.isdir(directory + file)',因为'os.path.isdir'只能知道某个目录是否是一个目录,如果你给它的完整路径。 –