下面是我嘗試做的: 我想獲取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'只能知道某個目錄是否是一個目錄,如果你給它的完整路徑。 –