2011-07-01 19 views
2

私のpythonプログラムにはいくつかの問題があります。Pythonを使って最も古いファイルを別のディレクトリにコピー

ディレクトリを開き、最も古いファイルを選択して、そのファイルを別のディレクトリにコピーしたいとします。

「shutil」と記載されている文書を読みましたが、最も古いものを選択する方法はわかりません。

誰かがこの問題を解決するのに役立つでしょうか?

答えて

3

次の例では、変更日を比較していますが、たとえばgtの定義をos.path.getctimeまたはos.path.getatimeに変更することによって、ファイル関連の時間を変更することはもちろん可能です。

import os, shutil 

fromdir = '/home/mac/Desktop' 
todir = '/home/mac/Desktop/tmp' 
gt = os.path.getmtime #change if you want something else 
oldest = min([(f, gt(f)) for f in os.listdir(fromdir)])[0] 
shutil.move(fromdir + '/' + oldest, todir) 
+0

UNIXでは、ctimeは最後のファイルステータス変更の時刻であり、Windows上の作成時刻のみです。 – cdarke

+0

ご返信ありがとうございます。 –

4

ファイルまたはディレクトリの最後のアクセス時間を取得する場合はos.path.getatime、最後の変更の時刻を取得する場合はps.path.getmtimeを使用できます。

+0

あなたは 'getmtime'の修正の時間を意味しますか? –

+0

@Eli:はい、あります - ありがとう、ありがとう。 –

1

これは私にとっては役に立たなかった。最小のファイル名(アルファベット順に 'a'に近いもの)を返しているようです。

タプル(gt(f))内のファイル情報とファイル名を逆にして、f)はそれを修正しました。したがって私は返された結果([1])のインデックスをアップしなければなりませんでした。

oldest = min([ ( gt(f),f ) for f in os.listdir(fromdir)])[1] 
関連する問題