2017-05-15 16 views
1

一連のフォルダから最新のファイルをコピーしようとしています。ここ構造です:。。Python - サブディレクトリを持つフォルダから最新のファイルをコピーする

\\ホスト\データ\のfolder1のは、\ * BK

\\ホスト\データ\のフォルダ2が\ *

\\ホスト\データ\のFOLDER3をbkを\ * BK

\\ host \ data \ folder4 \ * .bk

これらのフォルダは約600個あります。各フォルダの最新のファイルを1つのフォルダにコピーしたい。一部のフォルダも空になることがあります。

私はここで完全に失われ、運がないとたくさんのことを試しました。これは簡単でなければならず、私はなぜこのような大きな問題を抱えているのか分かりません。

Basicコード、

import os, shutil, sys 

source = r"\\server\data" 
dest = r"e:\dest" 

for pth in os.listdir(source): 
    if "." not in pth: 
     newsource = source + "\\" + pth + "\\" 
+0

私が仕事をしている中で、私はモックコードを組み合わせることができないという点では限られていますが、ずっと前に少し似たようなことを書いています。コードをつかんで遊ぶのは大歓迎です:https://github.com/DavidMetcalfe/Archive-files-older-than-set-number-days –

+0

これは素晴らしいスクリプトですが、うまくいきません私。時には今日からのファイルがあることもありますが、時には1週間古いこともあります。そのため、日付に関係なく最新のファイルを取得したいだけです。 – HMan06

+0

'mtime'を探しているので、私が提供されたスクリプトで一番古いので、これは最近のものに役立つかもしれません。 http://stackoverflow.com/a/2014704/563231 –

答えて

1

私は、テキストエディタで以下を書いたので、私は完全にそれをテストすることができませんでした。しかし、これはあなたのところでほとんどの方法を取得する必要があります。

import os 
import operator 

source = r"\\server\data" 
destination = r"e:\dest" 

time_dict = {} 

#Walk all of the sub directories of 'data' 
for subdir, dirs, files in os.walk(source): 
    #put each file into a dictionary with thier creation time 
    for file in os.listdir(dir): 
     time = os.path.getctime(os.path.join(subdir,file)) 
     time_dict.update({time,file}) 
    #sort the dict by time 
    sorted_dict = sorted(time_dict.items(), key=operator.itemgetter(0)) 
    #find the most recent 
    most_recent_file = next(iter(sorted_dict)) 
    #move the most recent file to the destination directory following the source folder structure 
    os.rename(source + '\\' + dir + '\\' + most_recent_file,str(destination) + '\\' + dir + '\\' + most_recent_file) 
+0

これは素晴らしいです、ありがとう! – HMan06

+0

@ HMan06問題はない、助けてうれしい! –

関連する問題