目次

ファイル移動・操作

pythonにおけるファイル操作は、基本 shutil を使えば良いが、細かな挙動は把握しておく必要がある。

copyとcopy2

どちらもファイルをコピーするコマンドだが、

コピー先が既に存在

shutil.copy, copy2
shutil.copy(src, dst, *, follow_symlinks=True)
shutil.copy2(src, dst, *, follow_symlinks=True)
shutil.move
shutil.move(src, dst, copy_function=copy2)

src, dstがディレクトリ同士でも、dstの中にsrcが入れられる点に注意。

distutils.dir_util.copy_tree
aaa\                                    aaa\
  |-bbb.txt                               |-bbb.txt
  `-ccc.txt(1)  copy_tree('ddd', 'aaa')   |-ccc.txt(2)
ddd\            ---------------------->   `-eee.txt
  |-ccc.txt(2)                          ddd\
  `-eee.txt                               |-ccc.txt(2)
                                          `-eee.txt

※ccc.txt は区別するため(1)(2)を付けているが、実際のファイル名には無いとする

「ディレクトリを移動したいが、dstが存在したら統合したい」場合は、ひとまずcopy_tree後、srcを消せばいい。が、同一ドライブの場合、移動とコピーでは速度に差が出るため、もっと良い方法が無いだろうか。