Pythonでのファイルとパスの操作について、完全かつ包括的に説明します。この記事では、ファイルの読み書き、ディレクトリ操作、パスの管理、エラー処理などを詳しく解説します。
1. ファイルの操作
Pythonでは、ファイルの操作は主にopen()
関数を使って行います。この関数は、ファイルを開くために使用され、その後、ファイルに対する読み書き操作を行います。

1.1 ファイルを開く
open()
関数は2つ以上の引数を受け取ります。最初の引数はファイルのパス、2番目はファイルを開くモードです。モードにはいくつかの種類があります:
'r'
: 読み込み専用(デフォルト)'w'
: 書き込み専用(ファイルが存在しない場合は新規作成)'a'
: 追記モード(既存のファイルがあればその末尾に追加)'b'
: バイナリモード(バイナリファイルを扱う際に使用)'x'
: 新規作成専用(ファイルがすでに存在する場合はエラー)
pythonfile = open("example.txt", "r")
1.2 ファイルの読み書き
ファイルを開いた後、以下の方法でファイル内容を読み書きできます:
read()
: ファイル全体を文字列として読み込むreadline()
: 1行ずつ読み込むwrite()
: 文字列を書き込むwritelines()
: 複数行をリストで書き込む
python# ファイル全体を読み込む
content = file.read()
print(content)
# 1行ずつ読み込む
line = file.readline()
print(line)
# 書き込み
with open("output.txt", "w") as file:
file.write("Hello, world!")
1.3 ファイルを閉じる
ファイルを操作した後は、必ずclose()
メソッドを使ってファイルを閉じることが推奨されます。with
ステートメントを使うことで、ファイルを自動的に閉じることができます。
pythonfile.close()
# または with を使って自動的に閉じる
with open("example.txt", "r") as file:
content = file.read()
print(content)
2. ディレクトリとパスの操作
Pythonでディレクトリやファイルのパスを操作するには、os
モジュールとpathlib
モジュールがよく使用されます。
2.1 osモジュールによる操作
os
モジュールは、システム操作に便利な関数を提供します。ディレクトリの作成や削除、ファイルの移動などが可能です。
pythonimport os
# 現在の作業ディレクトリを取得
current_dir = os.getcwd()
print(current_dir)
# 新しいディレクトリを作成
os.mkdir("new_directory")
# ディレクトリを削除
os.rmdir("new_directory")
# ファイルを移動
os.rename("old_file.txt", "new_file.txt")
2.2 pathlibモジュールによる操作
pathlib
は、Python 3.4以降で導入された新しいモジュールで、パスをオブジェクトとして扱います。os
モジュールと比べて、より直感的で使いやすいとされています。
pythonfrom pathlib import Path
# パスを作成
path = Path("example.txt")
# ファイルが存在するか確認
if path.exists():
print("ファイルは存在します")
# 親ディレクトリを取得
parent_dir = path.parent
print(parent_dir)
# 新しいディレクトリを作成
new_dir = Path("new_dir")
new_dir.mkdir(exist_ok=True)
# ファイルを移動
new_file = path.rename("new_example.txt")
2.3 ファイルとディレクトリの存在確認
ファイルやディレクトリが存在するか確認するには、os.path
またはpathlib
を使用できます。
python# os.pathを使用して確認
import os
if os.path.exists("example.txt"):
print("ファイルは存在します")
else:
print("ファイルは存在しません")
# pathlibを使用して確認
from pathlib import Path
path = Path("example.txt")
if path.exists():
print("ファイルは存在します")
2.4 パスの結合
ファイルパスを結合する際は、os.path.join()
を使用することをお勧めします。これにより、OSに依存しない方法でパスを結合できます。
pythonimport os
path = os.path.join("folder", "file.txt")
print(path)
pathlib
を使用すると、パスの結合は直感的に行えます。
pythonfrom pathlib import Path
path = Path("folder") / "file.txt"
print(path)
3. エラー処理
ファイルやディレクトリ操作では、エラーが発生する可能性があるため、エラー処理を行うことが重要です。Pythonでは、try
–except
ブロックを使用してエラーを処理できます。
pythontry:
with open("nonexistent_file.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("ファイルが見つかりません")
except Exception as e:
print(f"エラーが発生しました: {e}")
4. バイナリファイルの操作
テキストファイルではなくバイナリファイルを操作する場合、ファイルをバイナリモードで開く必要があります。これには、'rb'
や'wb'
モードを使用します。
python# バイナリモードで読み込む
with open("image.png", "rb") as file:
data = file.read()
# バイナリモードで書き込む
with open("output_image.png", "wb") as file:
file.write(data)
結論
Pythonでのファイルとディレクトリの操作は非常に多機能であり、柔軟に利用できます。os
モジュールとpathlib
モジュールを使い分けることで、ファイルシステムを簡単に操作できます。また、エラー処理を適切に行うことで、予期しない問題に対処できます。