Pythonでファイルを読み込む / 書き込む / エンコードを検出する

2021年5月29日土曜日

Python ファイル

t f B! P L

 Pythonでファイルの読み込み / 書き込みをする方法を紹介します。


Pythonでファイルを読み込み / 書き込みするにはopen関数を使います


ファイルに書き込む方法

file = open("filename","w")
file.write("Text")
file.close()

ファイルを読み込む方法

file = open("filename","r")
text = file.read()
file.close()
print(text)

最後には必ずfile.close()を入力してください

以上の方法で、ファイルを読み込み / 書き込みすることができます。
しかし、ファイルの中身に全角文字が含まれる場合、書き込むときにエラーが発生したり、
読み込むときに、文字化けが発生することがあります。それを回避するにはエンコードを指定する必要があります。

UTF_8UTF-8
UTF_8_SIGUTF-8 (BOM有)
SHIFT_JIS日本語ShiftJIS
UTF_16UTF-16LE(BOM有)
UTF_16_LEUTF-16LE
UTF_16_BEUTF-16BE

エンコードを指定して読み取る方法

file = open("filename","r",encoding="UTF_8",errors="ignore")
text = file.read()
file.close()

このコードではUTF-8のファイルを読み込んでいます。
errors="ignore"となっていますが、エラーを無視するということで、読み取れなかった文字を無視して
続けて読み取るという意味です。

エンコードを指定して書き込む方法

file = open("filename","w",encoding="UTF_8",errors="ignore")
file.write("あいうえおText")
file.close()

このコードではUTF-8で書きこんでいます。
これにも念のため、errors="ignore"を指定しています。

エンコードを検出する方法

ファイルを読み取るとき、指定したエンコードではなかったりして、結局正しくファイルを読み取れない...ってときがあります。
Pythonなら簡単にエンコードを自動検出することができます。

その前にエンコード判定に必要なライブラリをインストールする必要があります。

pip install chardet

インストールが完了したら、あとはコードを書いて実行するだけです。

import chardet
FILENAME = "filename"
tmp = open(FILENAME,"rb")
encode = chardet.detect(tmp.read())["encoding"]
tmp.close()
file = open(FILENAME,"r",encoding=encode,errors="ignore")
text = file.read()
file.close()
print(text)

このコードを実行しれば、指定したファイルのエンコードを判定してくれて、
ファイルを読み取ってくれます。ただし、エンコードがShiftJISとかだと、正しく読み取れないとのことでした。


今回はここまでにします。
次は、ファイル操作について、もう少し詳しく見ていきましょう。

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ