ファイル名とフォルダ名を比較して、ファイルをフォルダの中に移動するスクリプトを吐くPythonプログラム
大量の計測データや写真、自炊したドキュメント、撮りためた動画などを、ファイル名を基に自動でフォルダに振り分けて整理してくれるプログラムがあるといろいろ便利です。
例えば、ABC, CDE, FGHというフォルダがあったとき、同じ階層にあるファイルのファイル名にフォルダ名が含まれていれば、それをフォルダ中に移動するスクリプトファイルをfileKeeper.batという名前で出力します。
fileKeeper.batをダブルクリックで実行すれば、移動が完了します。
> dir
ABC
CDE
FGH
ABC01.pdf
ABC02.pdf
ANCA.pdf
CDE.txt
01_FGH.mov
のような場合には、
move /-Y ABC01.pdf ABC
move /-Y ABC02.pdf ABC
move /-Y CDE.txt CDE
move /-Y 01_FGH.mov FGH
のような内容のfileKeeper.batファイルを出力します。
余り短いファイル名には引っかからないように、if len(k) > 3: で制限を書けています。
fileKeeper.py
# coding: utf-8 import os import sys reload(sys) sys.setdefaultencoding('utf-8') print 'defaultencoding:', sys.getdefaultencoding() def cmp_len(s1, s2): return cmp(len(s1), len(s2)) if __name__ == "__main__": print(os.getcwd()) DirList = [] FileList = [] for i in os.listdir(os.getcwd()): if os.path.isdir(i): DirList.append(i) print i elif os.path.isfile(i): FileList.append(i) # フォルダ名が長い順に調べるように、文字列長でソート DirList.sort(cmp=cmp_len, reverse=True) f = open("fileKeeper.bat", "w") for j in FileList: for i in DirList: # フォルダ名から特定の文字や文字列を無視 k = i.replace('★','').replace('☆','').replace('●','').replace('○','') # あまりに短いフォルダ名は無視 if len(k) > 3: if k in j: print j + " move to " + i f.write("move /-Y \"" + j + "\" \"" + i + "\"\n") break print "finished."
環境はWindows10上のpython2.7でテストしています。
なお、このプログラムでファイルが消えたなどの不具合が起きても、一切責任とれませんのでご注意ください。
今日の、2016年夏、アニメ化期待の漫画コミックTOP3!
1.あそびあそばせ
|
|
|
|
|
|