这是我尝试做的事情: 我想获得一个列表,列出我的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' getAllFileFromDirectory”中的if-block。
有人可以告诉我我做错了什么以及为什么(学习是我的目标)。如何解决?
非常感谢您的评论。
答案 0 :(得分:1)
我修复了你的代码。您的问题是os.path.isdir
只有在收到完整路径的情况下才能知道某个目录是否是某个目录。所以,我将代码更改为以下内容并且可以正常工作。 os.path.getsize
和os.path.isfile
也是如此。
import os
def getAllFileFromDirectory(directory, temp):
files = os.listdir(directory)
for file in files:
if (os.path.isdir(directory + file)):
if file[0] == '.': continue # i added this because i'm on a UNIX system
print(directory + file)
getAllFileFromDirectory(directory + file, temp)
elif (os.path.isfile(directory + file) and os.path.getsize(directory + file) > 35000000):
temp.write(os.path.abspath(file))
def getFilesOutOfTheLimit():
basePath = "/"
tempFile = open('temp.txt', 'w')
getAllFileFromDirectory(basePath, tempFile)
tempFile.close()
print("Get all files ... Done !")
getFilesOutOfTheLimit()