2010-11-26 78 views
0

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

回答

2

目前,我正在学习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 

祝你好运!

+0

`无'是一个比'-1'更好的特殊值,意思是“未初始化”,你可以比较'不是'。 – nmichaels 2010-11-27 03:22:58

相关问题