【簡単】Pythonでファイルをコピーする方法|サンプルコード付

※本サイトにはプロモーション・広告が含まれています。

(最終更新日:2023年7月)

✔このような方へ向けて書かれた記事となります

「Pythonでファイルをコピーする方法ってどうやるの?」
「Pythonのコードでファイルをコピーする手順を知りたい」
「Pythonを使ってファイルをコピーする具体的な例を探している」

✔当記事を通じてお伝えすること

  • Pythonでファイルをコピーする基本的な考え方
  • Pythonのコードを使ってファイルをコピーする方法
  • Pythonでファイルコピー操作を行う実際の例

当記事では、Pythonでファイルをコピーする基本的な手法から、さまざまなオプションを利用して効率的にファイルをコピーする方法まで、実用的なコード例を交えながら解説します。

ぜひ記事の最後までお読みください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロジェクトマネージャー/SE(元外資系金融機関営業)

【副業】ブログ(月間15万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Pythonによるファイル操作の基礎知識

まずは、プログラミング言語「Python」を用いた、ファイル操作の基本について見ていきましょう。

ここで学ぶことは、プログラミングにおける重要なスキルであり、日々の作業の自動化やデータの処理に役立ちます。

  • Pythonでファイルを操作するメリットと使用シーン
  • Pythonのファイル操作に関する基本概念

Pythonでファイルを操作するメリットと使用シーン

Pythonでファイル操作をおこなうメリットとして、以下が挙げられます。

  • 大量のデータを扱う際の時間と手間を大幅に節約できる
  • さまざまな環境でのファイル操作を一貫しておこなえる

たとえば、ログファイルの解析、CSVやエクセルのデータ処理、画像や音声ファイルの操作など、幅広い場面で活用できます。

Pythonのファイル操作に関する基本概念

Pythonには、ファイル読み書きの組み込み関数が存在します。

  • open()関数:ファイルを開き、それを操作するためのオブジェクトを作成
  • osshutilなどのモジュール:より高度なファイル操作(ファイルのコピー、移動、削除など)

OSモジュールについては、詳しく以下の記事で解説しています。

ファイル操作を行うためのPythonの準備

こちらでは、Pythonでファイル操作をおこなうための準備について説明します。

まずはPython環境のセットアップから始め、その後にファイル操作に必要なモジュールのインポート方法など、順を追って見ていきましょう。

  • Python環境のセットアップ
  • ファイル操作に必要なモジュールのインポート

Python環境のセットアップ

Pythonでファイル操作をおこなうためには、まずPythonがインストールされた環境が必要です。

Pythonの公式サイトからダウンロードしてインストールできます。

Pythonのバージョン管理にはpyenvを使用すると便利です。

ファイル操作に必要なモジュールのインポート

Pythonでファイル操作をおこなうためには、osshutilといったモジュールをインポートする必要があります。

これらのモジュールはPythonの標準ライブラリに含まれているため、追加でインストールの必要はありません

以下のコードは、osshutilモジュールをインポートする例です。

import os
import shutil

これらのモジュールをインポートすることで、ファイルのコピー、移動、削除など、さまざまなファイル操作をおこなえます。

Pythonでファイルをコピーする具体的な方法

こちらでは、Pythonでファイルをコピーする具体的な方法について解説します。

  • shutilモジュールを使用したファイルコピーの基本
  • ディレクトリ全体をコピーするcopytree()関数の利用

shutilモジュールを使用したファイルコピーの基本

shutilモジュールのcopy()関数を使用して、簡単にファイルをコピーできます。

この関数は、元のファイルと新たに作成されるコピーのパスを引数として受け取るものです。

以下に具体的なコード例を示します。

import shutil

# コピー元のファイルパスとコピー先のファイルパスを指定
src_path = 'path/to/source_file'
dst_path = 'path/to/destination_file'

# ファイルをコピー
shutil.copy(src_path, dst_path)

src_pathで指定したファイルが、dst_pathで指定したパスにコピーされます。

ディレクトリ全体をコピーするcopytree()関数の利用

shutilモジュールのcopytree()関数により、ディレクトリ全体を新しい場所へコピーできます。

元のディレクトリと新たに作成されるコピーのパスを引数として渡しましょう。

以下が例です。

import shutil

# コピー元のディレクトリパスとコピー先のディレクトリパスを指定
src_dir_path = 'path/to/source_directory'
dst_dir_path = 'path/to/destination_directory'

# ディレクトリ全体をコピー
shutil.copytree(src_dir_path, dst_dir_path)

src_dir_pathで指定したディレクトリ(及びその中にあるすべてのファイルとサブディレクトリ)が、dst_dir_pathで指定したパスにコピーされます。

Pythonでファイルを移動する方法

こちらでは、Pythonでファイルを移動する基本的な方法と、移動先のディレクトリが存在しない場合の処理方法について解説します。

  • ファイルを移動する基本的な方法
  • 移動先のディレクトリが存在しない場合の処理

ファイルを移動する基本的な方法

Pythonでファイルを移動するには、shutilモジュールのmove()関数が使えます。

この関数では、移動するファイルの現在パスと移動先のパスを引数で与えてください。

以下がサンプルコードです。

import shutil

# 移動元のファイルパスと移動先のファイルパスを指定
src_path = 'path/to/source_file'
dst_path = 'path/to/destination_file'

# ファイルを移動
shutil.move(src_path, dst_path)

src_pathで指定したファイルが、dst_pathで指定したパスに移動します。

移動先のディレクトリが存在しない場合の処理

shutil.move()関数を使用してファイルを移動する場合、移動先のディレクトリが存在しないとエラーが発生します。

移動操作をおこなう前に、osモジュールのmakedirs()関数を使用して、移動先のディレクトリを作成することが推奨されます。

以下がその例です。

import os
import shutil

# 移動元のファイルパスと移動先のファイルパスを指定
src_path = 'path/to/source_file'
dst_path = 'path/to/destination_file'

# 移動先のディレクトリを作成
os.makedirs(os.path.dirname(dst_path), exist_ok=True)

# ファイルを移動
shutil.move(src_path, dst_path)

os.makedirs()関数により移動先のディレクトリが存在しない場合には作成され、その後でshutil.move()関数によりファイルが移動されます。

os.makedirs()関数の第二引数にexist_ok=Trueを指定することで、ディレクトリが既に存在している場合でもエラーを発生させずに処理を続行可能です。

Pythonのファイル操作におけるエラーハンドリング

こちらでは、ファイル操作時に発生しうるエラーとその対処法、実践的なエラーハンドリングの例について解説します。

ファイル操作は、さまざまなエラーが発生する可能性がありますので、必ず目を通してください。

  • ファイル操作時に発生しうるエラーとその対処法
  • 実践的なエラーハンドリングの例

ファイル操作時に発生しうるエラーとその対処法

Pythonでファイル操作をおこなう際には、以下のエラーが発生する可能性があります。

  1. ファイルが存在しない
  2. ファイルへのアクセス権限がない
  3. ディスクスペースが足りない

try/exceptブロックを使用して、適切にハンドリングしてください。

たとえば、ファイルが存在しない場合はFileNotFoundErrorが発生した例です。

import shutil

src_path = 'path/to/source_file'
dst_path = 'path/to/destination_file'

try:
    shutil.copy(src_path, dst_path)
except FileNotFoundError:
    print(f"File {src_path} not found.")

src_pathに指定したファイルが存在しない場合、エラーメッセージが出力されます。

実践的なエラーハンドリングの例

上記のエラーハンドリングを活かし、より実践的な例をご紹介します。

ファイルのコピー操作では、複数のエラーが発生する可能性を考慮しています。

import shutil
import os
import errno

src_path = 'path/to/source_file'
dst_path = 'path/to/destination_file'

try:
    shutil.copy(src_path, dst_path)
except FileNotFoundError:
    print(f"File {src_path} not found.")
except PermissionError:
    print(f"No permission to access {src_path}.")
except OSError as e:
    if e.errno == errno.ENOSPC:
        print(f"No space left on the device to copy {src_path}.")
    else:
        raise

ファイルが存在しない場合、アクセス権限がない場合、ディスクスペースが足りない場合にそれぞれ異なるエラーメッセージを出力します。

それ以外のエラーが発生した場合は、エラーをそのまま再発生させています。

Pythonでファイル操作をおこなうための応用テクニック

基本的なファイル操作とエラーハンドリングに続いて、より高度なファイル操作のための応用テクニックを紹介します。

具体的には、パスが存在するかどうかのチェック方法と、ファイル操作を行う際のベストプラクティスについて解説します。

  • パスが存在するかどうかのチェック方法
  • ファイル操作を行う際のベストプラクティス

パスが存在するかどうかのチェック方法

Pythonでは、os.pathモジュールのexists()関数を使用することで、指定したパスが存在するかどうかを確認することができます。

この関数は、パスが存在する場合にはTrueを、存在しない場合にはFalseを返します。

以下に具体的なコード例を示します。

import os

path = 'path/to/file_or_directory'

if os.path.exists(path):
    print(f"{path} exists.")
else:
    print(f"{path} does not exist.")

指定したパスが存在するかどうかに応じたメッセージが出力されます。

ファイル操作を行う際のベストプラクティス

Pythonでファイル操作を行う際には、以下のようなベストプラクティスを守りましょう。

  1. 可能な限りwithステートメントを使用してファイルを開き、自動的にクローズするようにする。
  2. ファイルやディレクトリのパスを操作する際には、os.pathモジュールを使用する。
  3. 大量のデータを扱う際には、データを一度に全て読み込むのではなく、一部ずつ読み込むようにする。

まとめ:Pythonでファイル操作を終えて

当記事では、Pythonでのファイル操作について、基本的な操作からエラーハンドリング、応用テクニックまで、広範にわたり解説しました。

Pythonの標準ライブラリには、これら以外にも多くの便利な関数やモジュールが含まれており、それらを活用することで、さまざまなタスクを効率的にこなせるでしょう。

Pythonのファイル操作を身につけたら、次はさらに高度な操作や他のライブラリを学んでみることもおすすめ。

例えば、ファイルやディレクトリの監視、ZIPやTARなどの圧縮ファイルの操作、ネットワーク越しのファイル操作など、学んでみると良いでしょう。

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