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

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

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




BTOパソコンの草分け的ブランド【FRONTIER】

教育機関や研究施設/3DCG/動画編集/そしてゲームプレイにも、用途に合わせたオーダーメイド高性能PCがお得な価格で購入できます

メモリ無償アップ!\新生活応援セール!!/4月15日(木)15時まで

入学や就業など何かと物入りな季節。圧倒的コスパのBTOパソコンを購入して新生活をスタートしませんか!

■AMD Ryzen 7 3700X + NVIDIA GeForce RTX 3060 モデルが149,800円!! 
■intel Core i5-10400F + NVIDIA GeForce RTX 3060 モデルが124,800円!!

他 お買い得PCが沢山!SALE製品は数に限りがあるので売り切れる前に是非
最新GPUも格安構成も自由に選べる!パソコン買うならBTOの【FRONTIER】


【デジハリONLINEの 基礎動画 + AdobeCC一年ライセンス のお得プラン】

デジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する、60時間の基礎動画とAdobe creative cloudの一年版ライセンスがパッケージされた、お得な講座プラン

「Adobeマスター講座」

受講ノルマは一切無し、Adobe製品の利用を目的に契約してもOK!これぞコスパ最強プラン!

▶︎ デジハリONLINE講座申込

▶︎基礎動画教材付きAdobe Creative Cloudを年額36,346円(税別)のお得な価格で使用する方法


【UdemyのおすすめPython学習コース 】

ネットショッピングをする感覚で講座を購入し、動画を視聴して学習する世界最大級のオンライン学習サイトUdemy

そのUdemyで評価が高いPythonの人気講座といえば、現役シリコンバレーエンジニア「酒井潤」講師の講座。Pythonの書き方だけでなくシリコンバレー仕込みの Pythonic(パイソニック)と称されるPythonらしいコードの記述方法や実務での所作まで学べます。

Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座

現役シリコンバレーエンジニアが教えるPython入門!応用では、データ解析、データーベース、ネットワーク、暗号化、並列化、テスト、インフラ自動化、キューイングシステム、非同期処理など盛り沢山の内容です!

現役シリコンバレーエンジニアが教えるアルゴリズム・データ構造・コーディングテスト入門

前半はアルゴリズムとデータ構造の基礎をPythonを用いて習得し、後半にはコーディング面接対策も行います。


Twitter Facebook Pocket LINE はてブ

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