Pythonでファイルのエンコーディングを指定する方法!encodingパラメータ入門
先生と生徒の会話形式で理解しよう
生徒
「先生、Pythonでファイルを開くときに文字化けすることがあります。どうしたらいいですか?」
先生
「それはファイルの文字コード(エンコーディング)がPythonのデフォルトと合っていない場合に起きます。open関数でencodingパラメータを指定することで解決できます。」
生徒
「文字コードって何ですか?」
先生
「文字コードは、コンピュータが文字を数字に変換して保存する方法のことです。有名なものにUTF-8やShift_JISがあります。」
生徒
「なるほど。実際にどうやって指定するんですか?」
先生
「具体的な例を見ながら説明しましょう。」
1. encodingパラメータとは?
encodingパラメータは、Pythonがファイルの文字を読み書きする際に使う文字コードを指定するためのものです。例えば、UTF-8形式のファイルを正しく読み込む場合はencoding='utf-8'を指定します。
2. ファイルを読み込むときの例
日本語を含むテキストファイルを正しく読み込む例です。
# UTF-8エンコーディングでファイルを読み込む
with open("sample_utf8.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# Shift_JISエンコーディングでファイルを読み込む
with open("sample_sjis.txt", "r", encoding="shift_jis") as f:
content = f.read()
print(content)
ポイント:
rは読み込みモード(read)encodingで文字コードを指定- 文字化けを防ぐためにファイルの文字コードに合わせる
3. ファイルに書き込むときの例
書き込む際もencodingを指定できます。
# UTF-8で書き込む
with open("output_utf8.txt", "w", encoding="utf-8") as f:
f.write("こんにちは、Python!")
# Shift_JISで書き込む
with open("output_sjis.txt", "w", encoding="shift_jis") as f:
f.write("こんにちは、Python!")
ポイント:
wは書き込みモード(write)- エンコーディングを間違えると文字化けする
- 日本語ファイルの場合はUTF-8が一般的
4. 読み書きでよく使う文字コード
主要な文字コードの例:
UTF-8:世界中で広く使われる標準的な文字コード。日本語も含めて多くの文字に対応。Shift_JIS:日本国内で古くから使われる文字コード。Excelや古いシステムで使用されることがある。UTF-16:大きな文字セットに対応。ファイルサイズが大きくなることがある。
5. 実用例:文字化けを防いでファイルをコピーする
ファイルを読み込んで同じ内容を別ファイルに書き込む例です。
# 元のファイルを読み込む
with open("source.txt", "r", encoding="utf-8") as f:
data = f.read()
# 新しいファイルに書き込む
with open("copy.txt", "w", encoding="utf-8") as f:
f.write(data)
ポイント:
- 元ファイルと同じエンコーディングを指定
- 文字化けを防ぎ、安全にデータをコピー可能
6. 注意点
- ファイルの文字コードを間違えると、文字化けやエラーの原因になる
- UTF-8は現在の標準で、可能であればUTF-8を使用
- 古いWindowsのシステムではShift_JISを使う場合がある
- Python 3では
encodingを指定することが推奨されている