从我的C盘获取所有文件 - Python

时间:2016-07-31 20:42:17

标签: python windows python-2.7 python-3.x

这是我尝试做的事情: 我想获得一个列表,列出我的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。

有人可以告诉我我做错了什么以及为什么(学习是我的目标)。如何解决?

非常感谢您的评论。

1 个答案:

答案 0 :(得分:1)

我修复了你的代码。您的问题是os.path.isdir只有在收到完整路径的情况下才能知道某个目录是否是某个目录。所以,我将代码更改为以下内容并且可以正常工作。 os.path.getsizeos.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()