読み込み中...

Pythonで学ぶ!ファイル操作の全手法10選

Python言語を用いて行うファイル操作方法を解説した記事のサムネイル画像 Python
この記事は約13分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonプログラミングを始めたばかりの方でも理解できるように、Pythonでのファイル操作について、その全手法を紹介します。

具体的なコード例とともに、それぞれの使い方や注意点を詳しく説明しますので、この記事を読めばPythonを使ったファイル操作がスムーズに行えるようになるでしょう。

●Pythonとは

Pythonとは、コードがシンプルで読みやすく、初心者にも扱いやすいプログラミング言語です。

その中でも、Pythonを用いたファイル操作はその柔軟性とパワフルさから、多くのプログラマーにとって重要なスキルとなります。

本記事では、その基本から応用までを紹介します。

●Pythonにおけるファイル操作の基本

まずはPythonでのファイル操作の基本から見ていきましょう。

Pythonではファイルの開閉、読み込み、書き込みといった基本的な操作をシンプルなコードで実現できます。

それぞれについて、具体的な方法を説明します。

○ファイルの開閉

ファイルの開閉には、Pythonの組み込み関数であるopen()とclose()を用います。

open()関数にはファイルパスとモード(’r’で読み込み、’w’で書き込み、’a’で追記)を指定します。

そして、ファイル操作が終わったら、必ずclose()でファイルを閉じるようにしましょう。

○ファイルの読み込み

ファイルの読み込みは、open()で開いたファイルオブジェクトに対してread()メソッドを使用します。

read()を実行すると、ファイルの内容全体を文字列として取得できます。

○ファイルの書き込み

一方、ファイルへの書き込みはwrite()メソッドを用います。

write()には書き込む内容を文字列で指定します。

また、ファイルを新規作成する場合も、open()関数でモードに’w’を指定するだけで可能です。

●具体的なファイル操作のコード例

それでは具体的なコード例を見ていきましょう。

まずはファイルの作成と書き込みからです。

このコードではopen()関数を使って新しいファイルを作成し、そこに文字列を書き込んでいます。

この例では’hello.txt’という名前の新しいファイルを作成し、その中に’Hello, Python!’という文字列を書き込んでいます。

file = open('hello.txt', 'w')
file.write('Hello, Python!')
file.close()

上記コードを実行後、’hello.txt’というファイルが生成され、その中には’Hello, Python!’と書き込まれています。

また、コード実行後は必ずファイルを閉じるようにしましょう。

これは開いたファイルを閉じないと、他のプロセスからそのファイルを操作できなくなる可能性があるためです。

○コード例2:ファイルの読み込み

次にファイルの読み込みのコード例です。

このコードでは、先ほど作成した’hello.txt’を読み込んでその内容を出力します。

この例ではread()メソッドを使ってファイルの内容を読み込み、print()関数でその内容を出力しています。

file = open('hello.txt', 'r')
print(file.read())
file.close()

このコードを実行すると、’Hello, Python!’という文字列が出力されます。

これは’hello.txt’の内容を読み込んで表示した結果です。

ファイルを読み込む際は、ファイルが存在し、かつ読み込み可能な状態であることを確認しましょう。

○コード例3:ファイルの内容更新

それでは次に、ファイルの内容を更新するコード例を見ていきます。

このコードでは、既存のファイルに新たな内容を追記します。

この例では、’hello.txt’に新たに’Welcome to Python programming.’という文字列を追記しています。

file = open('hello.txt', 'a')
file.write('\nWelcome to Python programming.')
file.close()

このコードを実行すると、’hello.txt’の最後に’Welcome to Python programming.’という文字列が追記されます。

ファイルに追記する際は、open()関数でモードに’a’を指定しましょう。

○コード例4:ファイルの削除

最後に、ファイルの削除についてです。Pythonではosモジュールのremove()関数を使って、指定したファイルを削除できます。

この例では、’hello.txt’を削除します。

import os
os.remove('hello.txt')

このコードを実行すると、’hello.txt’というファイルが削除されます。

ただし、存在しないファイルを削除しようとするとエラーが発生しますので、事前にファイルの存在確認を行うか、try-except文でエラーハンドリングを行うことが推奨されます。

●ファイル操作に関するエラーハンドリング

ファイル操作を行う際には、さまざまなエラーが発生する可能性があります。ここでは、Pythonでのファイル操作でよく遭遇するエラーや、それをどのように処理するかについて説明します。

○存在しないファイルを開こうとした場合

Pythonで存在しないファイルを開こうとすると、FileNotFoundErrorが発生します。このエラーは、指定したファイルが存在しないときに発生します。以下のコードは、存在しないファイルを開こうとしたときのエラーハンドリングの例です。

try:
    file = open('nofile.txt', 'r')
except FileNotFoundError:
    print('ファイルが存在しません。')

このコードでは、try-exceptブロックを使ってエラーハンドリングを行っています。tryブロックの中でエラーが発生すると、すぐにそれ以降の処理はスキップされ、exceptブロックが実行されます。この例では、ファイルが存在しないためにFileNotFoundErrorが発生し、’ファイルが存在しません。’と出力されます。

○権限がないファイルを開こうとした場合

次に、権限がないファイルを開こうとした場合のエラーハンドリングについて見ていきましょう。権限がないファイルを開こうとすると、PermissionErrorが発生します。以下のコードは、権限がないファイルを開こうとしたときのエラーハンドリングの例です。

try:
    file = open('protected.txt', 'r')
except PermissionError:
    print('このファイルを開く権限がありません。')

このコードでは、権限がないためにPermissionErrorが発生し、’このファイルを開く権限がありません。’と出力されます。Pythonのエラーハンドリングを理解し、適切にエラーを処理することで、より堅牢なプログラムを作成することができます。

●より高度なファイル操作:ディレクトリの操作

ここまでは、ファイルの基本的な操作方法について説明しましたが、Pythonではディレクトリに関する操作も可能です。

ディレクトリの作成、削除、名前の変更、中身の一覧取得など、ファイルシステムを自由自在に操作することができます。

○ディレクトリの作成と削除

ディレクトリの作成にはosモジュールのmkdir()関数を、削除にはrmdir()関数を使用します。

下記のコードでは、新しいディレクトリを作成し、その後で削除しています。

import os

# ディレクトリの作成
os.mkdir('new_directory')

# ディレクトリの削除
os.rmdir('new_directory')

このコードを実行すると、まず’new_directory’という新しいディレクトリが作成され、その後で削除されます。

ただし、削除するディレクトリが空でない場合、rmdir()関数ではエラーが発生します。

空でないディレクトリを削除するには、shutilモジュールのrmtree()関数を使用します。

○ディレクトリの内容一覧の取得

ディレクトリの中にあるファイルやディレクトリの一覧を取得するには、osモジュールのlistdir()関数を使用します。

下記のコードでは、現在のディレクトリの内容一覧を取得しています。

import os

# ディレクトリの内容一覧の取得
contents = os.listdir('.')
print(contents)

このコードを実行すると、現在のディレクトリ(‘.’)にある全てのファイルとディレクトリの一覧が出力されます。

○コード例5:ディレクトリの操作

それでは、これらの機能を組み合わせたディレクトリ操作の例を見てみましょう。

下記のコードでは、新しいディレクトリを作成し、その中に新しいファイルを作成し、その後でディレクトリの内容を一覧表示し、最後にディレクトリとファイルを削除しています。

import os
import shutil

# 新しいディレクトリの作成
os.mkdir('new_directory')

# 新しいディレクトリ内に新しいファイルの作成
with open('new_directory/new_file.txt', 'w') as f:
    f.write('Hello, World!')

# ディレクトリの内容一覧の表示
print(os.listdir('new_directory'))

# ディレクトリとその中のファイルの削除
shutil.rmtree('new_directory')

このコードを実行すると、まず’new_directory’という新しいディレクトリが作成され、その中に’new_file.txt’という新しいファイルが作成されます。

その後でディレクトリの内容一覧が表示され、最後にディレクトリとその中のファイルが削除されます。

ディレクトリの内容一覧の表示結果は[‘new_file.txt’]となります。

●Pythonでのファイル操作の応用例

まず、コード例6として、ログファイルの自動生成について説明します。

この例では、プログラムの実行結果をログファイルに自動的に書き込む方法を紹介します。

import datetime

# 現在の日付と時刻を取得
now = datetime.datetime.now()

# ファイル名に現在の日付と時刻を使用
filename = f'log_{now.strftime("%Y%m%d_%H%M%S")}.txt'

# ログファイルの作成と書き込み
with open(filename, 'w') as f:
    f.write('This is a log file.')

このコードでは、datetimeモジュールを使って現在の日付と時刻を取得し、その情報を使ってログファイルの名前を生成しています。

この名前を用いて新たなログファイルを作成し、その中に’This is a log file.’という文字列を書き込んでいます。

このように、Pythonで自動的にログファイルを生成する方法は、プログラムの実行結果を記録する際に非常に便利です。

次に、コード例7として、設定ファイルの読み込みと書き込みについて説明します。

設定ファイルは、プログラムの設定を保存したり、読み込んだりするために使われます。

Pythonではjsonモジュールを使って設定ファイルを簡単に操作することができます。

import json

# 設定ファイルの読み込み
with open('config.json', 'r') as f:
    config = json.load(f)

# 設定ファイルの書き込み
config['new_key'] = 'new_value'
with open('config.json', 'w') as f:
    json.dump(config, f, indent=4)

このコードでは、まずjsonモジュールを使って’config.json’という設定ファイルを読み込んでいます。

読み込んだ設定情報は辞書型の変数configに保存されます。

次に、この設定情報に新たなキーと値を追加し、それを再度’config.json’に書き込んでいます。

この例では、設定ファイルの読み込みと書き込みを行っています。

○コード例8:CSVファイルの操作

CSVファイルは、表形式のデータを保存するために広く使われています。

Pythonではcsvモジュールを使ってCSVファイルを簡単に操作することができます。

下記のコードでは、CSVファイルの読み込みと書き込みの方法を示しています。

import csv

# CSVファイルの読み込み
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# CSVファイルの書き込み
data = [['Name', 'Age'], ['Alice', 24], ['Bob', 27]]
with open('data.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(data)

このコードでは、まずcsv.readerを使ってCSVファイルを読み込み、その内容を一行ずつ出力しています。

次に、csv.writerを使って新たなデータをCSVファイルに書き込んでいます。

この例では、CSVファイルの読み込みと書き込みを行っています。

○コード例9:テキストファイル内の特定の文字列の検索

次に、テキストファイル内の特定の文字列を検索する例について説明します。

この操作は、大量のテキストデータから特定の情報を探す際などに役立ちます。

# 検索したい文字列
search_string = "特定の文字列"

# ファイルの読み込み
with open('sample.txt', 'r') as f:
    for line in f:
        # 検索したい文字列が行に含まれているかをチェック
        if search_string in line:
            print(line)

このコードでは、まず検索したい文字列をsearch_stringに設定します。

次に、’sample.txt’というファイルを一行ずつ読み込み、その各行にsearch_stringが含まれているかを確認します。

含まれていた場合はその行を出力します。

これにより、テキストファイルから特定の文字列を検索することができます。

次に、コード例として、複数のファイルを一括でリネームする例について説明します。

複数のファイルを一度にリネームする際には、osモジュールを使用します。

import os

# ディレクトリ内の全ファイルを取得
files = os.listdir('.')

for i, file_name in enumerate(files):
    # 新しいファイル名を生成
    new_name = f"new_file_{i}.txt"

    # ファイルのリネーム
    os.rename(file_name, new_name)

このコードでは、まずosモジュールを使って現在のディレクトリ内の全てのファイル名を取得します。

次に、それぞれのファイルに対して新しい名前を生成し、os.rename関数を使ってファイル名を変更します。

このようにして、一括で複数のファイルをリネームすることができます。

以上のようなPythonを用いたファイル操作の応用例を通じて、より深くPythonでのファイル操作方法について理解することができました。

まとめ

この記事ではPythonでのファイル操作の基本から応用まで、具体的なコード例を交えながら詳しく解説しました。

Pythonではさまざまなファイル操作を簡単に、そして効率的に行うことが可能で、これらの手法はデータ分析やWeb開発など、様々な場面で活用できます。

初めてPythonを学ぶ人でも理解できるように、各コードの動作原理や注意点についても触れてきました。

「Pythonで学ぶ!ファイル操作の全手法10選」を読んで、Pythonでのファイル操作がスムーズに行えるようになったことを願っています。

これからもPythonの学習を頑張ってください!