用語比較
read()・readline()・readlines()の違い(ファイルの読み方)
read()・readline()・readlines() の違いは、一度に読む範囲と戻り値の型です。read() はファイル全体を1つの文字列で、readline() は1行を1つの文字列で、readlines() は全行を文字列のリストで返します。
Python 3 エンジニア認定基礎試験は、オライリー・ジャパン「Pythonチュートリアル」の掲載内容を出題範囲とし、第7章入出力は40問中1問(2.5%)です(2026-10-15確認)。出題数は少ないものの、公式チュートリアル7.2.1はこの3つを順に説明しており、戻り値を選ぶ形で問われる題材です。
このページは、ファイルを読むメソッドの戻り値を選択肢で取り違える人を対象にしています。3つを同じ3行のファイルに当てた実行結果で並べます。
この記事の目次
この記事の根拠と出典
各セクションの見出しの下に、公式資料で確認した内容か編集部の整理かをラベルで示しています。 試験日・料金・申込条件・試験方式は変わることがあるため、申込前に公式サイトで確認してください。Python3エンジニア認定基礎試験の一次情報確認日: 2026-09-18。
- 公式一次資料と照合した内容
- read()・readline()・readlines() の戻り値、ファイル末尾での空文字列、with キーワードの扱いは、Python公式チュートリアル7.2・7.2.1を、出題範囲と第7章の出題数はPythonエンジニア育成推進協会の試験案内を2026-10-15に照合しています。コード例の出力はPython 3.9で実際に実行して確かめています。
- 編集部が学習用に整理した内容
- 3つのメソッドを選択肢から選び分ける手順と、確認問題は編集部の学習上の整理です。
資格ごとの公式資料の一覧
結論
公式一次資料と照合:用語の定義は公式一次資料と照合しています。
read()
ファイル全体を1つの文字列として返す。引数 size を渡すと、最大 size 文字を返す。ファイル末尾に達していると空文字列 '' を返す。
readline()
1行を文字列として返す。行末の改行文字 \n は残る。ファイル末尾では空文字列 '' を返す。
readlines()
全行を、1行1要素の文字列のリストとして返す。list(f) でも同じリストが得られる。
違いを表で確認
| 比較軸 | read() | readline() |
|---|---|---|
| 戻り値の型 | 文字列(全体で1つ) | readline() は文字列(1行分)、readlines() は文字列のリスト |
| 読む範囲 | ファイル全体(size を渡せばその文字数まで) | readline() は1行、readlines() は全行 |
| 改行文字 | 途中の改行も含めて1つの文字列 | 各行の末尾に \n が残る |
| ファイル末尾での結果 | 空文字列 '' | readline() は空文字列 ''、readlines() は読み残しが無ければ空のリスト |
| 選択肢で探す語 | 全体、1つの文字列、size | 1行、改行が残る、リスト、全行 |
公式一次資料と照合:Python3エンジニア認定基礎試験: 2026-09-18に一次資料で確認一次資料の一覧を見る →
Python3エンジニア認定基礎試験の学習に使う書籍(Amazon)
試験範囲を通して読むときの1冊です。読んだ章は、このサイトの章別問題で確かめられます。
どこで迷っているかを切り分ける
戻り値が文字列かリストかを、選択肢から選べない人
readlines() だけがリストを返します。read() と readline() は、どちらも文字列です。違いは、全体か1行かです。
readline() の結果に改行が付くことを忘れる人
公式チュートリアルは、readline() の戻り値の末尾に改行文字 \n が残ると述べています。"one" ではなく "one\n" が返ります。print() で出すと、さらに改行が加わります。
ファイルの最後まで読んだあとの動きを問われて迷う人
read() も readline() も、末尾では空文字列 '' を返します。空行は '\n' という1文字の文字列で表されるので、空文字列とは区別できます。
具体例で使い分ける
編集部の整理
例 1
3行のファイルに3つのメソッドを当てる
"one"・"two"・"three" の3行(各行末に改行あり)を書いたファイルを、with open() で開いて読む場面です。
- Python 3.9 で実際に実行すると、read() は 'one\ntwo\nthree\n' の1つの文字列を返し、同じファイルオブジェクトでもう一度 read() を呼ぶと '' を返しました。
- readline() を4回続けると、'one\n'・'two\n'・'three\n'・'' の順に返りました。
- readlines() は ['one\n', 'two\n', 'three\n'] のリストを返し、list(f) も同じ結果でした。
結論: 同じファイルでも、read() は1つの文字列、readline() は1行ずつの文字列、readlines() はリストです。
例 2
read() に size を渡す
同じファイルに対して read(5) を実行する場面です。
- 実際に実行すると、'one\nt' が返りました。改行文字も1文字として数えられています。
- 公式チュートリアルは、size を省略するか負の値にすると全体を読み込み、それ以外は最大 size 文字(バイナリモードでは size バイト)を読むと述べています。
結論: read(size) は、指定した文字数までだけを読みます。
例 3
with 文を抜けたあとにファイルを読む
with open() のブロックを抜けたあとで、同じファイルオブジェクトの read() を呼ぶ場面です。
- 実際に実行すると、f.closed は True になり、f.read() は ValueError: I/O operation on closed file. を発生させました。
- 公式チュートリアルは、ファイルオブジェクトを扱うときは with キーワードを使うのがよい習慣で、例外が起きてもファイルが正しく閉じられると述べています。
結論: with ブロックの外では読めません。読む処理は with の中に書きます。
問題文から答えを選ぶ手順
編集部の整理:3つのメソッドを選択肢から選び分ける手順と、確認問題は編集部の学習上の整理です。
- 1
何を返すかを見る
選択肢が「リスト」なら readlines()(または list(f))です。「文字列」なら read() か readline() です。
- 2
文字列なら範囲を見る
全体なら read()、1行なら readline() です。
- 3
改行文字を確認する
readline() の戻り値と readlines() の各要素には、行末の \n が残ります。
- 4
末尾の結果を確認する
read() と readline() は、末尾で空文字列 '' を返します。
試験での見分け方
編集部の整理
- 1read() は、ファイル全体を1つの文字列で返す。
- 2readline() は、1行を文字列で返し、行末の改行文字が残る。
- 3readlines() は、全行を文字列のリストで返す。
- 4read() と readline() は、ファイル末尾で空文字列 '' を返す。
- 5for line in f は、メモリ効率がよく速い、行ごとの読み方である(公式チュートリアルの記述)。
誤答しやすい選択肢
readline() が全行を返すと考える
修正: readline() が返すのは1行だけです。全行をリストで得るのは readlines() です。
readlines() の要素に改行が付かないと考える
修正: 各要素の末尾に \n が残ります。実行確認でも ['one\n', 'two\n', 'three\n'] でした。
read() がリストを返すと考える
修正: read() は1つの文字列を返します。行ごとに分かれるのは readlines() です。
ファイル末尾で例外になると考える
修正: 末尾では例外にならず、空文字列 '' が返ります。
確認問題
Q1ファイルの全行を、1行1要素のリストで取得するメソッドは?
答え: readlines()
readlines() は全行を文字列のリストで返します。list(f) でも同じリストが得られます。
Q2ファイル末尾で readline() を呼ぶと、何が返る?
答え: 空文字列 ''
readline() が空文字列を返したときは、ファイルの末尾に達したことを表します。空行は '\n' です。
Q3read() の戻り値の型は?
答え: 文字列(テキストモードの場合)
テキストモードでは文字列、バイナリモードでは bytes オブジェクトです。
到達チェック
- read()・readline()・readlines() の戻り値の型を言える
- readline() の戻り値に改行文字が残ることを説明できる
- ファイル末尾での read() と readline() の結果を言える
- read(size) の size の意味を説明できる
- with 文を使う理由を説明できる
関連ページで確認する
同じ資格で次に知りたいこと
- 辞書の d[key] と d.get(key) の違い(KeyError の扱い)
辞書の d[key] と d.get(key) の違いを、キーが存在しないときの KeyError と None、既定値の指定、Python 3.9 で実際に実行した出力、Python3エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- lambda式とdef関数の違い(単一の式・名前・return)
lambda式とdef関数の違いを、単一の式という制限、関数名、return の書き方、list.sort() の key への渡し方、Python 3.9 で実際に実行した出力、Python3エンジニア認定基礎試験での判断手順と確認問題まで解説します。
- break・continue・ループのelse節の違い(ループの途中終了と飛ばし)
Pythonのbreak、continue、ループのelse節の違いを、動き、else節が実行される条件、公式チュートリアル4.4と4.5の記述から実行結果つきで比較します。Python3エンジニア認定基礎試験での見分け方と確認問題も示します。
よくある質問
Qread()・readline()・readlines() の一番短い違いは?
read() は全体を1つの文字列、readline() は1行の文字列、readlines() は全行の文字列のリストです。
Qreadline() の戻り値に改行は付きますか?
付きます。行末の改行文字 \n が残ります。最終行がファイルの末尾で改行で終わらない場合だけ、付きません。
Q全行を読むには readlines() しかありませんか?
公式チュートリアルは、ファイルオブジェクトを for ループで回す方法を、メモリ効率がよく速い書き方として示しています。list(f) や f.readlines() でもリストが得られます。
QPython3エンジニア認定基礎試験の範囲ですか?
出題範囲はPythonチュートリアルで、第7章入出力が40問中1問です(2026-10-15確認)。公式チュートリアル7.2.1が、この3つのメソッドを説明しています。
次に見る比較
- G検定・DS検定・統計検定2級で重なる用語10語の比較
同じ名前の用語の定義と収録章を、資格ごとに並べます。
- ベイズの定理と条件付き確率の違い(統計検定2級の式と計算例)
求める確率の向きの違いと、陽性になる確率の計算例を確かめます。
- 紛らわしい用語ペア早見表
混同しやすい用語の違いと判定の手掛かりを、資格別の一覧で確かめます。
執筆: ミナト編集部(運営者情報を見る)
