検索

キーワード


目次

Pythonにおけるファイル入出力【初心者向け解説記事】

  • 公開日:2023-06-18 20:28:53
  • 最終更新日:2023-06-24 19:29:59
Pythonにおけるファイル入出力【初心者向け解説記事】

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

Pythonにおけるファイル入出力とは?

Pythonにおけるファイル入出力とは、Pythonのプログラムからファイルへのデータの書き込みやファイルからのデータの読み取りを行う機能のことを指します。Pythonには、ファイル入出力に関する豊富な標準ライブラリがあり、これらの操作を簡単かつ直感的に行うことができます。この操作は、プログラムを実行して生じた様々な種類のデータを保存し、後から参照したり、別のプログラムで使用したりするために重要です。


Pythonでファイルを扱う方法

Pythonでファイルの入出力をするためには、基本的には以下の操作が考えられます。

  1. ファイルを開く
  2. ファイルを読み込む
  3. ファイルに書き込む
  4. ファイルを閉じる


準備

まず、読み込ませるテキストファイルを用意します。例えば、"example.txt"という名前のファイルを作り、その中に次のような内容を書き込んでおきます。

好きな内容を書き込んでかまいません。

あいうえお
かきくけこ


ファイルを開く

Pythonでファイルを開くには、open()関数を使います。この関数は、ファイル名とモードを引数として受け取り、ファイルオブジェクトを返します。
ファイルを開いたら、その内容を読み込むことができます。これはread()メソッドを使います。

open()関数に渡す絶対パスを扱う際は、「バックスラッシュ(または\)」がPythonでは制御文字として扱われることに注意してください。バックスラッシュを二つ重ねてエスケープするか、文字列の前にrをつけてraw文字列とするとよいでしょう。

file = open('C:\path\to\example.txt', 'r', encoding="utf-8") # これはエラーになる
file = open('C:\\path\\to\\example.txt', 'r', encoding="utf-8") # バックスラッシュを二つ重ねてエスケープ
file = open(r'C:\path\to\example.txt', 'r', encoding="utf-8") # raw文字列を使用


例として、以下のようにファイルを操作します。

file = open('C:\\***\\example.txt', 'r', encoding="utf-8")
content = file.read()
print(content)
file.close()

例では、open関数に左から順番に絶対パス、読み込み専用モードを指す’r’、エンコード方式の指定を渡しています。


日本語を扱う場合、UTF-8のエンコードを指定しないと以下のようなエラーになることがあります。

UnicodeDecodeError: 'cp932' codec can't decode byte 0x86 in position 8: illegal multibyte sequence

また、file.close()は必ず記述してください。メモリリークを起こし、PCのパフォーマンスが落ちる可能性があります。

このコードが正常に実行された場合、先ほどの"example.txt"の内容が出力されます。


with文

Pythonのwith文は、特定の状況が終了したときにクリーンアップコードを自動的に実行するための文法です。主にリソース管理やエラーハンドリングに使用され、ファイル操作などのコードブロックを適切にクローズするために利用されます。

with文を使うと、ファイルの開閉を明示的に行う必要がありません。with文は、そのコードブロックが終了した時点で自動的にファイルをクローズしてくれます。

例として、先ほどのコードは以下のように書き換えられます。

with open('C:\\***\\example.txt', 'r', encoding="utf-8") as f:
    content = f.read()
print(content)

print文がwithブロックの外にありますが、一度データを変数に格納さえしてしまえば、ファイル自体を閉じていてもデータを利用することが出来ます。

このwith文の利点として、リソースのクリーンアップを手動で書く必要がないため、コードがより読みやすくなる、リソースのクローズを忘れることがなくなるという利点があります。

ファイル入出力の際は、基本的にwith文を使うことをお勧めします。


ファイルを読み込む

先ほどのread()メソッドのほかに、ファイルを読み込むメソッドが複数用意されています。


read()メソッド

ファイル全体をそのまま読み込みます。具体的な動作は前述のコードの通りです。


readline()メソッド

readline()メソッドは、ファイルを一行ずつ読み込みます。
ファイルの終端を超えて読み込んでも、空文字列が出力されるだけでエラーにはなりません。

例として、以下のように使います。

file = open('C:\\***\\example.txt', 'r', encoding="utf-8")
content = file.readline()
print(content)
content2 = file.readline()
print(content2)
content3 = file.readline()
print(content3)
file.close()

このコードを実行すると、以下のように出力されます。

あいうえお
かきくけこ


また、メソッドを用いずにファイルオブジェクトを直接ループすることでもファイルの各行を処理することもできます。

with open('C:\\***\\example.txt', 'r', encoding="utf-8") as f:
    for line in f:
        print(line)


readlines()メソッド

readlines()メソッドは、ファイルの各行を要素とするリストを返します。この方法はファイルがそれほど大きくないときに便利です。

例として、以下のように使います。

with open('C:\\***\\example.txt', 'r', encoding="utf-8") as f:
    lines = f.readlines()
    print(lines) 

このコードを実行すると、以下のように出力されます。「\n」は改行文字を表します。

['あいうえお\n', 'かきくけこ']


ファイルに書き込む

Pythonでは、ファイルに書き込む方法が複数用意されています。

write()メソッド

ファイルに上書きで書き込みを行うには、'w'モード(書き込みモード)でファイルを開く必要があります。このモードは"write"(書く)の略です。

以下の例では、write()メソッドで文字列を書き込んでいます。このモードでは、既存のファイルに対して書き込みを行うと、その内容は全て消去されてしまいます。新規に書き込んだ内容だけがファイルに残ります。

with open('C:\\***\\example.txt', 'w', encoding="utf-8") as f:
    f.write('Hello, World!')

このとき、example.txtの内容は、以下のようになります。

Hello, World!


writelines()メソッド

writelines()メソッドを使って、リストの全ての要素を一度に書き込むことができます。

lines = ['Hello, World!\n', 'Hello, Python!\n']
with open('C:\\***\\example.txt', 'w') as f:
    f.writelines(lines)

このとき、example.txtの内容は、以下のようになります。

Hello, World!
Hello, Python!


ファイルの末尾に追記する

ファイルの末尾に追記するには、'a'モードを使ってファイルを開く必要があります。このモードは"append"(追加)の略で、既存のファイルの末尾に新たな内容を追加するためのモードです。

with open('C:\\***\\example.txt', 'a', encoding="utf-8") as f:
    f.write('\nHello, Evelyone!')

例として、example.txtの内容は、以下のようになります。

Hello, World!
Hello, Python!
Hello, Evelyone!


まとめ

Pythonでのファイル入出力は非常に簡単で、プログラムの基本的な操作の一部となっています。読み込みと書き込みの両方に対して豊富なメソッドが用意されており、ファイル全体を一度に処理することも、行ごとに処理することも、リストとして一度に処理することも可能です。さらに、書き込み操作は既存のファイルを上書きするか、既存の内容に追加するかを選ぶことができます。

Pythonではまた、with文を使用することでファイルの開閉を自動的に管理できます。この機能により、ファイルのクローズを忘れてリソースリークを引き起こすというミスを防ぐことができます。

なお、ファイル操作に関するこれらの基本的な知識は、Pythonに限らず他の多くのプログラミング言語でも共通しています。しかし、Pythonのファイル入出力機能はその使いやすさで特に注目されており、この機能を理解しておけば、Pythonプログラムで様々なデータ操作を効率的に行うことが可能になります。


【著者】

ゆうさい

フォワードソフト株式会社のエンジニア。Java、Python、JavaScript、C#などの言語の他、クラウドやネットワーク技術を勉強しています。PythonやVBAを使った自動化で楽をする方法を考えるのが好きです。 最近はジェネレーティブAIの業務利用に関する検証を行っています。 資格を通じて知識を吸収することを心がけており、セキュリティスペシャリスト、データベーススペシャリスト、応用情報技術者、Oracle Certified Java Programmer Gold SE 11、Pythin3 エンジニア認定試験、HTML5プロフェッショナル認定試験レベル2、AWSプラクティショナーなどの情報資格を保有しています。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート