【Python入門】ファイル処理|操作の基本を知る

ファイル処理|操作の基本を知る_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

ファイルは、PCにデータを保存する上で欠かせないもので、様々な種類があります。

そんな各種ファイルについて、Pythonを使用して処理することができます。

本記事では、Python基礎となるファイル処理について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用したファイル処理について学びたい人
levtech-ad

ファイル処理

Pythonでファイル処理をする際に使用するのが、open()関数です。

open()はファイルオブジェクトを返し、このオブジェクトを介してファイルの読み書き処理を行います。

open()関数の引数は、(file name, mode)となっており、modeは下表の通りです。

mode内容ポインタ備考
“r”読み込みモードで開く先頭デフォルト
“r+”読み込み/書き込みモードで開く先頭
“w”書き込みモードで開く先頭開いたときにファイルをリセット
“w+”読み込み/書き込みモードで開く先頭開いたときにファイルをリセット
“a”追記モードで開く末尾
“a+”読み込み/追記モードで開く末尾
“x”排他的(新規)書き込みモードで開く先頭既に同名ファイルが存在すればエラーになる
“b”バイナリモード
“t”テキストモードデフォルト

ファイルの書き込み

open()関数を使用して、ファイルの書き込みを行います。

“w”モードを使用し、write()メソッドで書き込んだ例を以下にご紹介します。

#input

#ファイル"fruits.txt"を新規作成し、書き込みモードで開く
f = open("fruits.txt", mode = "w")

#ファイルに"apple"と書き込む
f.write("apple")

#ファイルを閉じる
f.close()

“w”モードは、開いた時点でファイルをリセットしてしまいます。

ファイルに内容追加する際には、”a”モードを使用しますので、注意しましょう。

ファイルの読み込み

open()関数の”r”モードを使用し、ファイルの読み込みを行います。

read()メソッドを使用して、上で作成したファイルを読み込んでみます。

#input

#ファイル"fruits.txt"を読み込みモードで開く
f = open("fruits.txt", mode = "r")

#ファイルの中身を表示する
print(f.read())

#ファイルを閉じる
f.close()
#output
apple

上でファイルに書き込んだ「apple」が正常に読み込まれました。

ファイルの追記

上で述べた”a”モードを使用して、ファイルへの追記を行います。

“a”モードでファイル末尾に追記し、”r”モードで読み込んだ例を以下にご紹介します。

#input

#ファイル"fruits.txt"を追記モードで開く
f = open("fruits.txt", mode = "a")

#ファイルの末尾に"orange"と追記する
f.write("\norange")

#ファイルを閉じる
f.close()

#ファイル"fruits.txt"を読み込みモードで開く
f = open("fruits.txt", mode = "r")

#ファイルの中身を表示する
print(f.read())

#ファイルを閉じる
f.close()
#output
apple
orange

ファイルに追記した「orange」が正常に読み込まれました。

改行「\n」を記述しない場合には、appleorangeと文字がつながります。

ファイルの読み込みと追記

読み込みと書き込みを同時に行うには、+オプションを指定します。

“a+”モードを使用して、「ファイル読み込み→追記→再度読み込み」の順で実行します。

上表の通り、追記モードではファイルポインタが末尾になっています。

この場合、読み込みする前にポインタを先頭に移動する必要があります。

f.seek()メソッドを使用してポインタを先頭に移動させて、読み込んでみます。

#input

#ファイル"fruits.txt"を読み込み/追記モードで開く
f = open("fruits.txt", mode = "a+")

#ポインタをファイル先頭に移動する
f.seek(0)

#ファイルの中身を表示する
print(f.read())
#output
apple
orange

“a+”モードで読み込みできましたので、続けて以下の通り追記します。

#input

#ファイルの末尾に"banana"と追記する
f.write("\nbanana")

#ポインタをファイル先頭に移動する
f.seek(0)

#ファイルの中身を表示する
print(f.read())

#ファイルを閉じる
f.close()
#output
apple
orange
banana

追記から再読み込みまで、”a+”モードで一貫して実行できました。

with文でファイル処理を簡潔化

今までご紹介したファイル処理では、ファイルを閉じる際にclose()関数を使用してきました。

しかし、毎回面倒ですし、閉じるのを忘れてしまう可能性もあります。

そのため、ファイル処理を簡潔化する手段として、with文の使用をおすすめします。

with文を使用した例を以下にご紹介します。

#input

#ファイル"fruits.txt"を新規作成し、読み込み/書き込みモードで開く
with open("fruits.txt", mode = "w+") as f:

#ファイルに"apple"と書き込む
    f.write("apple")

#ポインタをファイル先頭に移動する
    f.seek(0)

#ファイルの中身を表示する
    print(f.read())
#output
apple

ファイルが自動的に閉じられ、ファイル処理が簡潔になりました。

エンコーディング

Pythonでファイルを開く場合、指定しない限り、定められたエンコーディングで開かれます。

たとえば、WindowsであればシフトJISで、MacであればUTF-8でエンコードされていると見做されます。

そのため環境によっては、日本語などの非アスキー文字が文字化けしたり、例外が発生したりします。

これを防ぐためには、ファイルを開く際にエンコーディングを指定する必要があります。

以下にエンコーディングをUTF-8に指定した例を載せます。

#input

#ファイル"fruits.txt"を新規作成し、読み込み/書き込みモードで開く
with open("fruits.txt", mode = "w+", encoding = "utf-8") as f:

#ファイルに"apple = 林檎"と書き込む
    f.write("apple = 林檎")

#ポインタをファイル先頭に移動する
    f.seek(0)

#ファイルの中身を表示する
    print(f.read())
#output
apple = 林檎

open()関数の引数「encoding = “utf-8″」で、エンコーディングをUTF-8に指定して開きました。

このように開くファイルのエンコーディングに合わせて指定することで、デフォルトと異なる形式のファイルも開くことができます。

ファイルオブジェクト

上でご説明したもの以外の、基本的なファイルオブジェクトをご紹介します。

readline()

ファイルから一行読み込みます。

引数として、読み込むバイト数を整数で指定することもできます。

以下に例を載せます。

#input

#ファイル"fruits.txt"を新規作成し、読み込み/書き込みモードで開く
with open("fruits.txt", mode = "w+", encoding = "utf-8") as f:

#ファイルに"apple\norange\nbanana"と書き込む
    f.write("apple\norange\nbanana")

#ポインタをファイル先頭に移動する
    f.seek(0)

#ファイルを一行読み込む
    print("一行読み込み:",f.readline())

#ファイルを3バイト読み込む
    print("3バイト読み込み:",f.readline(3))
#output
一行読み込み: apple
3バイト読み込み: ora

print(“一行読み込み:”,f.readline())で一行目を読み込み、print(“3バイト読み込み:”,f.readline(3))で2行目の3バイトを読み込みました。

readlines()

ファイルをすべて読み込み、行ごとにリストとして出力します。

以下に例を載せます。

#input

#ファイル"fruits.txt"を新規作成し、読み込み/書き込みモードで開く
with open("fruits.txt", mode = "w+", encoding = "utf-8") as f:

#ファイルに"apple\norange\nbanana"と書き込む
    f.write("apple\norange\nbanana")

#ポインタをファイル先頭に移動する
    f.seek(0)

#ファイルをすべて読み込み、行ごとにリストとして出力する
    print(f.readlines())
#output
['apple\n', 'orange\n', 'banana']

writelines()

文字列から成るシーケンス(リストやタプル等)の要素を結合して書き込みます。

以下に例をご紹介します。

#input

#リストを作成する
list = ["apple, ","orange, ","banana"]

#ファイル"fruits.txt"を新規作成し、読み込み/書き込みモードで開く
with open("fruits.txt", mode = "w+", encoding = "utf-8") as f:

#ファイルにリストを書き込む
    f.writelines(list)

#ポインタをファイル先頭に移動する
    f.seek(0)

#ファイルの中身を表示する
    print(f.read())
#output
apple, orange, banana

まとめ

この記事では、Python基礎となるファイル処理について、ご説明しました。

本記事を参考に、ファイル操作を試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました