2010-11-26 13 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

'None'は" -1 "より"初期化されていない "という意味のより良い特別な値で、' is not'と比較できます。 – nmichaels

+0

しかし、もし最大のものがタプルでないなら、私は最初の比較をどうすればいいでしょう。私。私は最大のタプルをいつ割り当てるのですか?とにかくポインタのおかげで! –

関連する問題