DESIGNMAP

  1. TOP
  2. 公開講座
  3. ゼロから始めるPython入門
  4. ファイルの読み書き ー ゼロから始めるPython入門【Vol.15】

ファイルの読み書き ー ゼロから始めるPython入門【Vol.15】

今回はファイルの読み込み、書き込みを学んでいきます。

ファイルの書き込み

まずはファイルへの書き込みを試してみましょう。
Atomを起動します。[ファイル]メニュー→[新規ファイル]をクリックします。[ファイル]メニュー→[保存]をクリックします。以下のコードを書いて、Vo.3でつくった「python-study」フォルダ内に、「io1.py」というファイル名で保存します。

\nのバックスラッシュ\は、Macの方は半角で[option]キーを押しながら[¥]で入力ができます。

f = open("sample.txt", "w")

f.write("こんにちは\n")
f.write("ありがとう\n")
f.write("さようなら\n")

f.close()

実行すると、「python-study」フォルダ内に「sample.txt」が生成されています。開くと、

こんにちは
ありがとう
さようなら

と書き込まれています。

f = open("sample.txt", "w")

open()関数の第2引数にモードを渡します。wはファイルがなければ生成して、書き込みされます。ファイルがすでに存在する場合は、上書きで書き込みます。

下記のようなモードがあります。モードを省略した場合、デフォルトが適用されます。

w 書き込み(ファイルが存在する場合は、上書で書き込みされる)
r 読み込み(デフォルト)
a 追加書き込み
a 追加書き込み
x ファイルがない場合のみ書き込み。ファイルが存在する場合はエラーになる。
t テキストモード(デフォルト)
b バイナリモード
f = open("sample.txt", "w")

f = open("sample.txt", "wt")

の省略形です。tはデフォルトなので省略が可能です。

\nはエスケープシーケンスといい「改行」を表します。エスケープシーケンスは特殊文字を表現するのに使われます。

その他のエスケープシーケンスは公式サイトにまとまっています。
http://docs.python.jp/3/reference/lexical_analysis.html#index-16

複数行の文章を書き込む

長い文章を書き込んでみましょう。
「python-study」フォルダ内に、「io2.py」というファイル名で保存します。

f = open("sample.txt", "w")

txt = """タプルは読み取り専用のリストです。
要素の追加、削除、変更ができないリストです。
丸括弧でくるみ、カンマで複数の要素を格納できます。"""

f.write(txt)
f.close()

実行すると

タプルは読み取り専用のリストです。
要素の追加、削除、変更ができないリストです。
丸括弧でくるみ、カンマで複数の要素を格納できます。

3つのダブルクオート"""文字列"""は複数行の文字列をつくれます。3つのシングルクオート'''文字列'''でも可能です。改行はエスケープシーケンスが不要で反映されます。インデント(字下げ)、スペースもエスケープシーケンスなしでそのまま反映されます。

ファイルの読み込み

今度は読み込みのコードを書いていきます。
「python-study」フォルダ内に、「io3.py」というファイル名で保存します。

f = open("sample.txt")

txt = f.read()

f.close()

print(txt)

実行すると

タプルは読み取り専用のリストです。
要素の追加、削除、変更ができないリストです。
丸括弧でくるみ、カンマで複数の要素を格納できます。
f = open("sample.txt")

f = open("sample.txt", "rt")

の省略形です。

長いファイルを読み込む時

read()はすべての文章を一気に読み込んでしまいます。

txt = f.read(50)

と書くと50文字だけ読み取り、変数に代入されます。

下記のようなコードを書くと50文字ずつ読み込みます。
「python-study」フォルダ内に、「io4.py」というファイル名で保存します。

f = open("sample.txt")

txt = ""

while True:
    tmp_txt = f.read(50)
    if not tmp_txt:
        break
    txt = txt + tmp_txt

f.close()

print(txt)

read()は最後まで読み込むと空文字列が返されます。

if not tmp_txt:

空文字列はif文の条件式ではFalseにデータ型が変換されます。notがついているのでTrueに反転されて、条件式はif True:となります。if文が成立してbreakが実行されてwhileは終了します。

whileとbreakについては「whileによる繰り返し処理 ー ゼロから始めるPython入門【Vol.8】」を参照。

スポンサーリンク

関連記事

プロフィール

DESIGNMAP
制作ディレクター
お問い合わせ