新しいファイルだけ上書きコピーする
今までshutilとかでチマチマやってたけど、Windowsなら「xcopy」コマンドを使えばよい事に気付いた。
主なオプションは以下の通り。
/D | 新しいファイルだけをコピー |
/S /E | サブフォルダもコピー |
/H | 隠しファイルもコピー |
/C | エラーを無視してコピー |
/Y | 無条件上書きコピー |
/R | 読み取り専用ファイルもコピー |
/EXCLUDE: | 除外したいファイル/フォルダが書かれたファイルを指定 |
以下、/EXCLUDE:で指定するファイルの例。
\.hg\ \.bzr\ .db ~
上の例では、フォルダは.hgと.bzr、ファイルは.dbや~が付いているファイルが除外される。
(絶対パスで一部でもマッチされる部分があれば除外される)
pythonで書くと以下のとおり、pythonというよりWindowsの機能だが・・・
import subprocess src = "src_dir" dst = "dst_dir" exclude = "exclude.txt" subprocess.call("xcopy %s %s /D /S /Y /EXCLUDE:%s"%(src, dst, exclude))
※まだ試していないので間違いがあるかも、試したら改めて更新します。