Pythonでファイルを整理する

Python3を使って溜まったファイルをサブディレクトリを作って整理しました。

ホームディレクトリのDownloadsにあるファイルを、拡張子毎にディレクトリを作成しファイルを移動するようにしています。

from pathlib import Path


def main():
    path = Path.home()/'Downloads'
    file_type = ('pdf', 'jpg', 'mp3', 'dmg', 'txt', 'zip', 'xls', )
    for type in file_type:
        # 拡張子をファイル名としたディレクトリを作成。既に存在してもエラーにしない。
        (Path(path)/type).mkdir(exist_ok=True)
        p = Path(path).glob('*.' + type)
        for f in p:
            f.rename(Path(path)/type/f.name)

if __name__ == '__main__':
    main()
  • ファイルの移動はshutilを使おうとも思ったのですが、renameして対応することにしました。
  • mkdirは引数にexist_ok=Trueをつけるとディレクトリが既に存在してもエラーにならないので便利です。Scriptを作成している途中で何回か実行してディレクトリができてしまっていることが多かったので。
  • / でパスが連結できるのが違和感があったのですが、使っていくうちに慣れました。

Pythonのバージョン

$ python3 -V
Python 3.6.1

参考

11.1. pathlib — オブジェクト指向のファイルシステムパス — Python 3.6.3 ドキュメント

Python3.4以降ならos.pathはさっさと捨ててpathlibを使うべき - Qiita