Pythonのファイルの読み書き

投稿日: 2024年3月11日

pythonのファイル操作について

Pythonでファイル操作を教えてください。

Pythonでファイル操作は簡単になっているよ。

ファイルの開き方

open()関数は2つの主要な引数を取ります: ファイル名とモードです。

file_object = open('filename.txt', 'mode')
モード内容
‘r’読み取り専用(デフォルト)open(‘filename.txt’, ‘r’)
‘w’書き込み専用(ファイルが存在する場合は上書き、存在しない場合は新規作成)open(‘filename.txt’, ‘w’)
‘a’追記専用(ファイルが存在する場合は末尾に追記、存在しない場合は新規作成)open(‘filename.txt’, ‘a’)
‘r+’読み書きの両方open(‘filename.txt’, ‘r+’)
‘b’バイナリモード(例: ‘rb’、’wb’)open(‘filename.txt’, ‘b’)

ファイルの読み取り

ファイルからデータを読み取るには、ファイルオブジェクトのread()メソッドを使用します。

with open('filename.txt', 'r') as file:
    content = file.read()
    print(content)

withステートメントを使用すると、ファイル操作が完了した後にファイルを自動的に閉じることができます。これにより、リソースのリークを防ぐことができます。

ファイルへの書き込み

ファイルへの書き込みには、ファイルオブジェクトのwrite()メソッドを使用します。

with open('filename.txt', 'w') as file:
    file.write('Hello, Python!')

ここでは、filename.txtを書き込み専用モード('w')で開いています。
このモードでは、ファイルが既に存在する場合はその内容が削除され、新しい内容で上書きされます。ファイルが存在しない場合は新規に作成されます。

ファイルへの追記モード

# ファイルの末尾に追記するモードで開く
with open('filename.txt', 'a') as file:
    file.write('\nPython is fun!')

追記モード(’a’)を使用すると、既存のファイルの末尾に内容を追加することができます。
このモードでは、ファイルの既存の内容は保持され、新たに書き込まれた内容が末尾に追加されます。

読み書きモード

# ファイルを読み書き両方のモードで開く
with open('filename.txt', 'r+') as file:
    file.write('Adding a line.\n')
    file.seek(0)
    content = file.read()
    print(content)

読み書き両方のモード(’r+’)では、ファイルの読み取りと書き込みが両方可能です。
seek(0)メソッドを使ってファイルの先頭に戻り、read()メソッドで内容を読み取っています。

注意点

  • 書き込みモード(’w’)でファイルを開くと、ファイルの既存の内容は削除されます。
  • 追記モード(’a’)では、ファイルの内容を保持しながら新しいデータを追加できます。
  • withステートメントを使用すると、ファイル操作の完了後にファイルが自動的に閉じられ、リソースのリークを防ぐことができます。

フォルダを指定してファイルを指定するにはどうすればいいですか?

方法は色々あるね。ちょっと例をあげて説明するね。

フォルダを指定してファイルを開く場合、ファイルのパスにそのフォルダのパスを含める必要があります。
ファイルパスは絶対パスでも相対パスでも構いません。

相対パスを使用する場合

相対パスは、現在の作業ディレクトリからのファイルの位置を示します。例えば、現在のディレクトリが/home/user/projectで、開きたいファイルが/home/user/project/data/filename.txtにある場合、相対パスはdata/filename.txtになります。

with open('data/filename.txt', 'r') as file:
    content = file.read()
    print(content)

絶対パスを使用する場合

絶対パスは、ファイルシステム上でのファイルの完全な位置を指します。
例えば、LinuxやMacOSでは/home/user/project/data/filename.txt、WindowsではC:\Users\User\Project\data\filename.txtのようになります。

# LinuxやMacOSの例
with open('/home/user/project/data/example.txt', 'r') as file:
    content = file.read()
    print(content)

# Windowsの例
with open('C:\\Users\\User\\Project\\data\\example.txt', 'r') as file:
    content = file.read()
    print(content)

パスの結合

ファイルパスをプログラム内で動的に扱う場合、os.path.join()関数を使用して、異なるオペレーティングシステムに対応したファイルパスを生成することが推奨されます。
これにより、OSのファイルシステムの違い(パス区切り文字など)を自動的に処理できます。

import os

folder_name = 'data'
file_name = 'filename.txt'
file_path = os.path.join(folder_name, file_name)

with open(file_path, 'r') as file:
    content = file.read()
    print(content)

この方法を使えば、プラットフォームに依存することなく、異なるディレクトリにあるファイルを開くことができます。
フォルダを指定してファイルを開く場合も、パスの正確な指定が重要です

ファイルの削除

ファイルを削除するには、os.remove()関数を使用します。

import os
if os.path.exists('filename.txt'):
    os.remove('filename.txt')
    print('ファイルを削除しました。')
else:
    print('ファイルが存在しません。')

Pythonでのファイル操作はこれらの基本的な方法によってカバーされますが、より複雑な操作には追加のモジュールやメソッドが必要になる場合があります。
安全かつ効率的なファイル操作のためには、適切なエラーハンドリングとリソース管理を行うことが重要です。

記事