Pythonでファイルを作成したり、ファイルの中身を読み込んだりする方法を解説します。
ファイル操作ができるようになると、Pythonでできることの幅がぐっと広がりますので、是非この機会に1から10まで丸っとマスターしておきましょう。
Pythonエンジニアであれば、絶対に知っておきたい重要知識ばかりです。是非最後までご覧ください。
それでは、早速解説を始めます。
ファイルの作成:open関数
まずは、ファイルの作成方法から解説します。
ファイルを作成するには、組み込み関数 "open()" を利用します。構文ルールは以下の通り。
open(ファイル名,モード,エンコーディング)
1つ1つ詳しく解説するために、まずは簡単なサンプルコードを載せておきます。
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8') # writeメソッドを利用しファイルに文字を書き込む file.write("Hello Python!") # ファイルを閉じる file.close()
結果がこちら。

1つ1つ、詳しく解説します。
open関数:ファイル名
open(ファイル名,モード,エンコーディング)
open関数の最初の引数には、作成したいファイル名(もしくは編集したいファイル名)を指定します。
先ほどの例では、「sample.txt」というファイル名を指定しています。
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8')
これで、「sample.txt」というファイルが作成されます。
ちなみに、既に存在しているファイル名を指定すると上書き(※追記ではなく、全部上書き。)されてしまうため注意が必要です。
open関数:モード
open(ファイル名,モード,エンコーディング)
2番目の引数は、モードです。
モードとは簡単に言うと、「読み込み」なのか「書き込み」なのかを指定するものです。以下のモードをメインに覚えておけばOK。
モード | 内容 |
---|---|
r | 読み込みモード:何も指定しないとこのモードがデフォルトで選択される。 |
w | 書き込みモード:同名のファイルが存在する場合は上書き。存在しない場合は新規作成。 |
x | 書き込みモード:同名のファイルが存在する場合はエラーとなる。 |
a | 追記モード:読み込んだファイルの最後に追記する。 |
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8')
先ほどのサンプルコードでは、「w」を指定しています。
つまり、書き込みモードでファイルを操作し、ファイルを新規保存しようとしているということです。
open関数:エンコーディング
open(ファイル名,モード,エンコーディング)
3つ目の引数にはエンコーディングを指定します。
エンコーディングは、省略するエンジニアの人もいますが、文字コードが異なると文字化けの原因となるためできるだけ指定するようにしましょう。
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8')
今回の例は、「utf-8」を指定しています。
ファイルオブジェクト
さて、ここまで解説してきたサンプルコードをもう1度ご覧ください。
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8')
結論、open関数が何をしているかと言うとファイルを開いているだけなのですが、重要なのはファイルを操作するためのファイルオブジェクトが返されるということ。
※上記サンプルコードの "file" は、ファイルオブジェクト。
ファイルオブジェクトを簡単に説明すると、Pythonプログラム上に生成された操作対象のファイルのクローンのようなものです。

※したがって、上記サンプルコードの "file" は "sample.txt" のクローンということ。
このファイルオブジェクトを操作することにより、実際にファイルに書き込んだり、内容を読み取ったりしていくのがPythonにおけるファイル操作の基本思想です。
ここからは、このファイルオブジェクトを利用して、実際にファイルへの文字の書き込み・読み込みを行っていきます。
ファイルへの書き込み:writeメソッド
ファイルへの書き込み方法を説明します。
ファイルへの書き込みはwriteメソッドを利用します。
file.write("文字列")
※"file" はファイルオブジェクトを表します。
早速サンプルコードをご覧ください。
txt = "ファイルへ書き込む内容" # ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8') # writeメソッドを利用しファイルに文字を書き込む file.write("Hello Python!") file.write(txt) # ファイルを閉じる file.close()
結果がこちら。

引数に指定した文字列(文字列オブジェクト)をそのままファイルに書き込みます。
もし、改行したければ通常の文字列と同様エスケープシーケンスを利用すればOK。
txt = "ファイルへ書き込む内容" # ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8') # writeメソッドを利用しファイルに文字を書き込む file.write("Hello Python!") file.write("\n"+txt) # ファイルを閉じる file.close()

非常に簡単ですね。
ファイルの読み込み:readメソッド
今度は既にあるファイルから中身を読み込む方法です。
ファイルからの読み込みにはreadメソッドを利用します。
file.read()
※"file" はファイルオブジェクトを表します。
今回は先ほど作成したファイルから文字を読み取っていきます。
# ファイルを読み取りモードで開く(モードr) file = open("sample.txt", "r",encoding='utf-8') # content にファイルの中身を受け渡す content = file.read() print(content) # Hello Python! # ファイルへ書き込む内容
先ほど書き込んだ内容を読み取ることができました。
初心者の方が間違いやすい注意点は以下の部分。
# ファイルを読み取りモードで開く(モードr) file = open("sample.txt", "r",encoding='utf-8')
読み取りモードで開く必要があるので、モードは「r」を指定します。
モード | 内容 |
---|---|
r | 読み込みモード:何も指定しないとこのモードがデフォルトで選択される。 |
もし、「r:読み込み」ではなく「w:書き込み」にしてしまうと・・・
# ファイルを読み取りモードで開く(モードr) file = open("sample.txt", "w",encoding='utf-8') # content にファイルの中身を受け渡す content = file.read() print(content) # UnsupportedOperation: not readable
「UnsupportedOperation: not readable」というエラーが起きてしまいます。
この点に気を付けていればreadメソッドも決して難しいものではありません。
ファイルを閉じる:closeメソッド
最後にファイルを閉じる方法です。
file.close()
※"file" はファイルオブジェクトを表します。
ファイルを閉じるには、closeメソッドを利用します。
実は、このcloseメソッドを利用しなくても、ファイルが閉じられないかと言うとそんなことはなく、Pythonがいい感じでファイルを閉じてくれます。
ですが、closeメソッドを利用しファイルを閉じておかないと様々な点で弊害が生まれてきてしまうため、必ずopenメソッドを利用しファイルを開いたら、closeメソッドでファイルを閉じるようにしましょう。
# ファイルを新規作成 file = open("sample.txt", "w",encoding='utf-8') # writeメソッドを利用しファイルに文字を書き込む file.write("Hello Python!") # ファイルを閉じる file.close()
これで、基本的なファイル操作方法についての解説は以上です。
ファイル操作を行う場合は必ず以下の3ステップが必要です。
- open関数を利用してファイルを開く or 新規作成
- ファイルの操作(読み込み・書き込み)
- closeメソッドを利用してファイルを閉じる
with文を利用した書き方について
実は、ここまで解説したファイル操作処理の記述方法をもっと簡易化したwith構文というのもが存在します。
実際の現場で書かれるソースコードは、このwith文を利用する場合がほとんど。
ここまでの内容をマスターできた方は是非実践的なwith文についても合わせて学習してみてください。
Pythonを1から学習したい方は
Pythonをより実践的に学びたい―。実際にコーディングをしながら学びたい―。独学に限界を感じている―。
そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがおすすめです。都度検索しながら知識を補完していくのではなく、1から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。
各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。