データをハードディスクに移動したのだが (3)
1000個程度のファイルをエクスプローラーで移動すると10分以上かかる件。 Python で一覧を出すだけなら15秒、という事実を紹介したが、 実際にファイル移動まで実行するプログラムを書いた。 移動する関数はこんな感じ。
import os, sys import shutil from stat import * def mover(srcdir, dstdir, ts_begin, ts_end): for f in os.listdir(srcdir): pathname = os.path.join(srcdir, f) mode = os.stat(pathname).st_mode if S_ISREG(mode): ctime = os.stat(pathname).st_ctime if ctime >= ts_begin and ctime < ts_end: shutil.move(pathname, dstdir)
実際はいろいろデバッグ用にメッセージ出したり経過時間を出したり移動したファイル数を数えて出したりしているが、基本になる処理はこれで合っていると思う。 試しにやってみたのが、SSD間の転送だからズルいのだが、
939 files
40.077811s
こんな感じで処理できている。 エクスプローラだと10分以上かかる処理が1分以内で終わっているから万歳、ってとこである。 あとは転送先を USB 外付け HDD にすると、どれ位時間がかかるかだ。
JUGEMテーマ:Windows
- 2019.03.23 Saturday
- Windows
- 17:28
- comments(0)
- trackbacks(0)
- by phinloda