查找最大的文件和删除文件夹

时间:2010-11-26 22:06:59

标签: python

我正在为我下载的电视节目制作一个清理脚本。我希望它获取每个文件夹中的最大文件,移动/重命名它,然后删除该文件夹。我遇到的问题是,有时当有另一个嵌套文件夹时,它会崩溃并跳过它。我不知道如何将其转换为执行相同功能的递归函数。最好只查找最大的文件,而不是使用硬编码的30MB。

此外,有时我下载的文件的日期不正确,因此如果它可以使每个新文件成为脚本运行的当前日期和时间,那就太棒了。

import os
import shutil


dir = "C:\Users\Bobe\Downloads\TV\\"

for folder in os.listdir(dir):
    if os.path.isdir(os.path.join(dir,folder)):
        for file in os.listdir(dir + folder):
            filelocation = dir+folder+"\\"+file
            if os.path.getsize(filelocation) > 30000000: # This is in bytes (30 MB)
                extension = os.path.splitext(file)[1]
                shutil.move(filelocation, dir + folder + extension)
            else:               
                os.remove(filelocation)

        shutil.rmtree(dir + folder)

1 个答案:

答案 0 :(得分:3)

我正在学习python :)感谢您的练习:D

这应该有效:

import os
import sys

biggest = ("", -1)
directory = sys.argv[1]

print "Searching", directory

def search(dir):
    global biggest
    for item in os.listdir(dir):
        item = dir + "/" + item
        if os.path.isdir(item):
            search(item)
        else:
            itemsize = os.path.getsize(item)
            if itemsize > biggest[1]:
                    biggest = (item, itemsize)

search(directory)
if biggest[1] != -1:
    print "Found: ", biggest
    # Do something with biggest
祝你好运!