読者です 読者をやめる 読者になる 読者になる

「Python」ファイル / ディレクトリの移動

最近、「Python のお勉強シリーズ」と題して、Python の基礎的な内容をお勉強してましたが、やっぱり基礎的な内容だけだと飽きてくるので、ちょっと簡単なツール作って遊んでみました。

※ 「Python のお勉強シリーズ」は現在第10回目・・・

Python のお勉強10 ( モジュールの作成 ) - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2015/08/23/012323

以下のことをするツールを作りました。

* あるディレクトリ ( baseDir とする ) に存在するファイル / ディレクトリをあるディレクトリに移動させる
* ただし、移動元 / 移動先ディレクトリともに baseDir 内のディレクトリとする
* baseDir に存在するファイル / ディレクトリで移動させたくないものは移動対象外とできる


コードは以下みたい感じになりました。dstDirName、exceptFileDir に存在しないディレクトリ / ファイルを指定すると ValueError でこけちゃいますが、まぁ、移動前でエラーになってもダメージはないのでひとまずこのままで。あとは、大してテストはできてないですが、とりあえず大丈夫かなと思ってます。

■ filemove.py

#coding: cp932

import shutil, os

#基底ディレクトリ
baseDir    = "C:\\test"

#移動先ディレクトリ名
dstDirName = "dst"

#移動対象外ファイル / ディレクトリ一覧
exceptFileDir = "except1,except2,except.txt"

#ファイルの移動
def filemove(src, dst):
    shutil.move(src, dst)

#移動対象ファイル / ディレクトリの一覧をリストで取得
def listdir():
    fdlist = os.listdir(baseDir)

    fdlist.remove(dstDirName) #移動先ディレクトリをリストから削除

    if 0 != len(exceptFileDir): #移動対象外ファイル / ディレクトリが指定されている場合のみ処理
        exceptFileDirNameList = exceptFileDir.split(",")
        for i in exceptFileDirNameList:
            ii = i.strip() #余計な空白を削除
            fdlist.remove(ii) #移動対象外ファイル / ディレクトリをリストから削除

    return fdlist

if __name__ == "__main__":
    fdlist = listdir()
    dst = baseDir + "\\" + dstDirName
    for i in fdlist:
        src = baseDir + "\\" + i
        filemove(src, dst)
        print(src) #移動ファイル / ディレクトリの表示

ディレクトリ一覧の取得、ファイル / ディレクトリの移動は os、shutil モジュールを使ってます。

・16.1. os — 雑多なオペレーティングシステムインタフェース — Python 3.4.3 ドキュメント
http://docs.python.jp/3.4/library/os.html

・11.10. shutil — 高レベルなファイル操作 — Python 3.4.3 ドキュメント
http://docs.python.jp/3.4/library/shutil.html


僕はすぐにデスクトップが散らかっちゃうので、baseDir をデスクトップとして使ってみようかと思います ( わざわざツール使うより絶対ドラッグ&ドロップの方が早いですけどね・・・ )。

以上です。

[ 環境情報 ]
Windows 7 SP1
Python 3.4.3