Pythonでファイルやフォルダのコピー・移動、削除をする方法-MAYA アーティストのスクリプト入門-

python_shutil_copy_topimage

ファイルやフォルダのコピーや移動はスクリプトでよく使われる基本的な機能の一つです。

ファイルを1つや2つなら手動でコピーアンドペーストすれば済みますが、複雑な階層に散らばっているファイルを指定のそれも複雑な階層に振り分ける作業を数百数千ファイルに対して処理する必要がある場合などがわかりやすいでしょう。

もしファイルのコピーが一つだけだとしても、そのファイルのコピーがルーティーンになっているのなら、その作業もスクリプトで処理してしまえば、ルーティーン部分の作業量を減らす事ができます。一回のコピーアンドペーストは単純な事かもしれませんが、毎日、毎回の事であればその作業数は膨大です。作業量を減らせるところは減らすほうが良いし、それだけではなく自動化するによって手動によるケアレスミスをなくす事ができます。

Pythonでファイルやフォルダを操作するには

shutilモジュール を使います。

shutilモジュールは、ファイルを単純にコピーできるだけではなく権限も含めてコピーする事ができたり、フォルダを階層ごとコピーする事ができるなど、とても様々に ファイル・フォルダ の操作をする事ができます。

shutilモジュールには色々な機能がありますが、その中から良く使われる機能を紹介したいと思います。

shutil.copyfile(src,dst)
ファイルをコピーします。 メタデータはコピーしません。

shutil.copystat()
最終アクセス日時と最終更新日時をコピーします。

shutil.copy()
ファイルをファイル又はフォルダにコピーします。パーミッション(権限)もコピーします。

shutil.copytree()
フォルダを階層ごとコピーします。

shutil.rmtree()
フォルダを階層ごと削除します。

shutil.move()
ファイルやフォルダを別の場所に移動します。

この記事ではshutilモジュールから上記の機能の使い方を紹介します。


shutil.copyfile() ファイルをコピー

ファイルをコピーするには

shutil.copyfile(“元ファイルのパス”,”コピー先のパス”)

を使います。

import shutil

shutil.copyfile("D:/liquidJumper/python/shutil/python_copyfile.txt","D:/liquidJumper2/python_copyfile.txt")


説明:

 shutil.copyfile()を使ってファイル「python_copyfile.txt」をコピーするするには

コピー元のファイルパスを第1引数に”D:/liquidJumper/python\shutil/python_copyfile.txt”

コピー先のファイルパスを第2引数
に”D:/liquidJumper2/python_copyfile.txt”

に指定します。

実行:

“D:/liquidJumper/python\shutil/python_copyfile.txt” から “D:/liquidJumper2/python_copyfile.txt” へファイルがコピーされました。

「python_copyfile.txt」をコピー


ファイルのプロパティを確認すると作成日更新日時アクセス日時が元ファイルとコピーファイルで違います。

作成日時と更新日時、アクセス日時

shutil.copystat() 最終アクセス時間と最終更新時間をコピー

上記でコピーしたファイルのアクセス日時と更新日時が元ファイルと違うので、元ファイルの日時をコピーファイルにコピーします

最終アクセス時間と最終更新時間のデータをコピーするには

shutil.copystat(“元ファイルのパス”,”コピー先のパス”)

を使います。

import shutil

shutil.copystat("D:/liquidJumper/python/shutil/python_copyfile.txt","D:/liquidJumper2/python_copyfile.txt")


説明:

shutil.copystat()を使って、

第1引数に「日時のコピー元となるファイルのパス」を指定、
第2引数に「日時をコピーするファイルのパス」を指定
します。

実行:

ファイルの更新日時とアクセス日時がコピーされたのが確認できました。
ただ作成日時はコピーされません

ファイルの更新日時とアクセス日時がコピー

shutil.copy() パーミッション(権限)もコピー

パーミッション(権限)も含めてファイルをコピーするには

shutil.copy(“元ファイルのパス”,”コピー先のパス”)

を使います。

import shutil

shutil.copy("D:/liquidJumper/python/shutil/python_copy.txt","D:/liquidJumper2/")


説明:

shutil.copy()を使ってファイルをコピーするには

コピー元のファイルのフルパスを第1引数に”D:/liquidJumper/python/shutil/python_copy.txt”

コピー先にファイルのフルパス”D:/liquidJumper2/python_copy.txt” 又は フォルダパス”D:/liquidJumper2/”

を指定します。

実行:

“D:/liquidJumper/python/shutil/python_copy.txt” から ”D:/liquidJumper2/python_copy.txt” へ ファイルがコピーされました。

ファイルがコピーされました

shutil.copytree() フォルダを階層ごとコピー

フォルダを階層ごとコピーするには

shutil.copytree(“元ファイルのパス”,”コピー先のパス”) 

を使います。

import shutil

shutil.copytree("D:/liquidJumper/python","D:/liquidJumper2/python")


説明:

ファイルが入っているフォルダ「shutil」を別の場所にコピーするには

コピー元のフォルダパスを第1引数に”D:/liquidJumper/python”

コピー先のフォルダパスを第2引数に”D:/liquidJumper2/python”

指定します。

実行:

“D:/liquidJumper/python” が ”D:/liquidJumper2/python” へフォルダが階層ごとコピーされました。

フォルダが階層ごとコピー

shutil.rmtree() フォルダを階層ごと削除

フォルダを階層ごと削除するには

shutil.rmtree(“削除するフォルダのパス”)

を使います。

import shutil

shutil.rmtree("D:/liquidJumper2/python")


説明:

shutil.rmtree()を使って削除したいフォルダのパスを引数に指定します。

実行:

フォルダ “D:/liquidJumper2/python” が階層ごと削除されました。

フォルダ "D:/liquidJumper2/python" が階層ごと削除

shutil.move() ファイルやフォルダを別の場所に移動

ファイルやフォルダを別の場所に移動するには

shutil.move(“元ファイルのパス”,”移動先のパス”) 

を使います。

import shutil

shutil.move("D:/liquidJumper/python/shutil","D:/liquidJumper2/shutil")


説明:

shutil.move()を使ってフォルダを移動したい場合

元のフォルダパスを第1引数に”D:/liquidJumper/python/shutil”

移動先のフォルダパスを第2引数に”D:/liquidJumper2/shutil”

指定します。

実行:

ファルダ「shutil」が “D:/liquidJumper/python/shutil” から “D:/liquidJumper2/shutil” へ移動されました。

フォルダ移動

まとめ

Pythonでファイルやフォルダのコピーや移動、削除をする方法を紹介しました。

Pythonでファイルやフォルダを操作するには
shutilモジュール を使います。

shutilモジュールはファイルやフォルダを単純にコピー出来るだけではなく、パーミッション(権限)や最終更新時間、メタデータも含めたコピーをする事も可能です。

それぞれの機能を見極めて使うと便利です。


Twitter Facebook Pocket LINE はてブ

おすすめの関連記事:
コチラの記事も読まれています
あわせてよく読まれている記事