Pythonでファイルをコピーする【1行で実現!完全自動化】

スポンサードリンク
アイキャッチ Python
過去の自分
過去の自分

データのバックアップをとるため、ファイルを別の場所にコピーしたい…。
Pythonでファイルをコピーする方法は無いの?

今の自分
今の自分

あります!
できるだけ簡単にできる方法をわかりやすく解説いたします!
「複数のファイルをコピーする方法」
「フォルダの中身全てをコピーする方法」
も紹介いたします!

【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。

スポンサードリンク

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

「shutill」「copy」を使います。まずは実行見本をどうぞ。

実行見本

実行見本

全コード

import shutil

shutil.copy('C:/Utatane/input.xlsx', 'C:/Utatane/0413backup')

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

現在、Cドライブの中に「Utatane」というフォルダがあります。
その中にある「input.xlsx」というエクセルファイルを、「0413backup」というフォルダにコピーしてみます。

インポート

import shutil

ファイルやフォルダを移動させるには、「shutil」のインポートが必要です。
まずは上記一文を記述して、「shutil」をインポートしましょう。

ファイルのコピー

shutil.copy('C:/Utatane/input.xlsx', 'C:/Utatane/0413backup')

上記の一文で、ファイルをコピーすることができます。

【 shutil.copy(‘現在のフォルダパス/ファイル名‘, ’コピー先のフォルダパス’) 】

コピー先のフォルダに同じ名前のファイルが既に存在していた場合、上書き保存されてしまいます。
コピー先に元々あったファイルは実質消えてしまいますので、ご注意ください。

また、フォルダパスやファイル名が間違っていた場合、コピーが正常に行われません。
エラーが出て教えてくれる場合があるものの、出ないこともあります。
フォルダパスやファイル名は間違わないようにしましょう。

「copy」を使った場合、コピー先ファイルの更新日時などは書き換えられてしまいます。
【コピー元ファイル】更新日時:2024/04/13 10:10
【コピー先ファイル】更新日時:2024/04/16 19:32

更新日時などを書き換えたくない場合は、「copy」ではなく「copy2」を使いましょう。
使い方・書き方は「copy」と同じです。

日付入りフォルダもPythonで自動作成できます。下記記事をご参考ください。

複数のファイルをコピーする

「Utatane」フォルダにある他のファイルもコピーしてみましょう。

import shutil
import glob

files = glob.glob('C:/Utatane/*.*')

for file in files :
    shutil.copy(file, 'C:/Utatane/0413backup')

実行してみます。

実行見本

他のファイルも「0413backup」フォルダ内にコピーできました。


複数のファイルをコピーするには「glob」を使います。
2行目でglobをインポートし、
4行目でファイル一覧を取得しています。
「*.*」のところを「*.xlsx」に変えるとエクセルファイルだけをコピーできます。

取得したファイルパス一覧を、6行目のfor文を使って1つ1つコピーしています。

フォルダの中身全てをコピーする

今度は、フォルダの中身全てをコピーしてみましょう。

import shutil

shutil.copytree('C:/Utatane/test', 'C:/Utatane/0413backup', dirs_exist_ok = True)

フォルダの中身全てをコピーするには、「copytree」を使います。
書き方は「copy」と同じですが、「dirs_exist_ok = True」というのが追加されています。

「dirs_exist_ok = True」は、「上書きを許可する」というものです。
これを書かなかった場合、【「0413backup」が既に存在しています】
というようなエラーが出てコピーできません(上書きができないため)


では、実行してみましょう。

実行見本

「test」フォルダの中身全てを「0413backup」フォルダ内にコピーできました。
「copytree」を使えば、「test2」のようなフォルダもコピーすることができ、
さらに「test2」フォルダ内のファイルやフォルダもコピーすることができます。

スポンサードリンク

うまく動作しない時

エラーが出る

No such file or directory: ‘xxx’

「FileNotFoundError: [Errno 2] No such file or directory: ‘xxx’」「指定したファイルやフォルダがありません」というエラーです。

「copy」で指定した「現在のフォルダパスやファイル名」が間違っている可能性があります。
実際のパスと、指定のパスを見比べてみましょう。

指定されたパスが見つかりません

「FileNotFoundError: [WinError 3] 指定されたパスが見つかりません。: ‘xxx’」フォルダパスやファイル名が間違っている場合に起こるエラーです。

実際のパスと、指定のパスを見比べてみましょう。

既に存在するファイルを作成することはできません

「FileExistsError: [WinError 183] 既に存在するファイルを作成することはできません。: ‘xxx’」は、「copytree」を使用した時に出るエラーです。

見本のように、「dirs_exist_ok = True」を追記することで解決します。

スポンサードリンク

最後に

Pythonでファイルをコピーする方法を解説いたしました。

冒頭の悩みのように、データのバックアップをする場合に便利ですので。ぜひご活用ください。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました