ファイルやフォルダのコピーや移動はスクリプトでよく使われる基本的な機能の一つです。
ファイルを1つや2つなら手動でコピーアンドペーストすれば済みますが、複雑な階層に散らばっているファイルを指定のそれも複雑な階層に振り分ける作業を数百数千ファイルに対して処理する必要がある場合などがわかりやすいでしょう。
もしファイルのコピーが一つだけだとしても、そのファイルのコピーがルーティーンになっているのなら、その作業もスクリプトで処理してしまえば、ルーティーン部分の作業量を減らす事ができます。
一回のコピーアンドペーストは単純な事かもしれませんが、毎日、毎回の事であればその作業数は膨大です。作業量を減らせるところは減らすほうが良いし、それだけではなく自動化するによって手動によるケアレスミスをなくす事ができます。
Pythonでファイルやフォルダを操作するには
shutilモジュール を使います。
shutilモジュールは、ファイルを単純にコピーできるだけではなく権限も含めてコピーする事ができたり、フォルダを階層ごとコピーする事ができるなど、とても様々に ファイル・フォルダ の操作をする事ができます。
shutilモジュールには色々な機能がありますが、その中から良く使われる機能を紹介したいと思います。
ファイルをコピーします。 メタデータはコピーしません。
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” へファイルがコピーされました。
ファイルのプロパティを確認すると作成日と更新日時、アクセス日時が元ファイルとコピーファイルで違います。
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” が階層ごと削除されました。
|
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モジュールはファイルやフォルダを単純にコピー出来るだけではなく、パーミッション(権限)や最終更新時間、メタデータも含めたコピーをする事も可能です。
それぞれの機能を見極めて使うと便利です。
|
自宅からでもWeb制作・プログラミング・アプリ開発などが習得できるさまざまなコースをラインナップ。
非エンジニアでスキルを磨きたい方から、フリーランス、就職/転職を目指す方まで、専属のメンターがサポート。
最近は副業ブームもあり「 はじめての副業コース 」が人気です。
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|