Pythonでファイルにデータを書き込んでいく方法



Pythonでファイルにデータを書き込んでいく方法

Pythonの基本メソッドの一つである write()
基本をマスターしておけば、ファイルの自動作成やデータ保存のスキルが向上。
今回は、 write() のいろいろな書き方やチョットしたポイントをご紹介。

Pythonでアプリ開発を考えている方や自動化処理を考えている方、Python全般を習得しようとしている方、参考になると思います。逆に、人工知能やデータ解析目的にPythonを学習している方にとっては、あまり参考にならないかもしれません。

目次
  1. 【Python入門】Pythonでファイルにデータを書き込んでいこう
  2. Pythonのデータ書き込みについて
  3. write()文の書き方いろいろ
  4. 書き込めるデータの種類
  5. 文字列以外の書き込みについて
  6. 書き込みデータの追加
  7. まとめ

【Python入門】Pythonでファイルにデータを書き込んでいこう

Pythonのデータ書き込みについて

image

Pythonでデータをファイルに書き込みたい時は、以下のようなケースでしょう。

  • データ保存
  • ファイルの自動作成
  • ゲーム開発
  • GUIアプリの開発
  • 音声の自動文字起こし内容の保存

これらの場面すべてにおいて write()関数 を使用可能。

例えば、文字入力した内容をテキストファイルに記録する場合は、

x = input('入力よ→ ')
file = open('InputText.txt', 'w')
file.write(x)
file.close()

<< 結果 >>

image

それでは次に write() 関数について詳しく見ていきます。まずはいろいろな表現方法から。

write()文の書き方いろいろ

Web上でPythonチュートリアルを見ていますと、同じ write() に関することなのにコードが違ったりします。 いくつかの書き方を以下にご紹介。

<< write() のサンプル① >>

text = 'Python学習中'
file = open('test1.txt', 'w')
file.write(text)
file.close()

<< write() のサンプル② >>

text = 'Python学習中'
with open('test2.txt', 'w') as f:
    f.write(text)

<< write() のサンプル③ >>

f = open('test3.txt','w')
f.write('Python学習中')
f.close()

<< 結果 >>

image

この①②③のコードすべて test.txt ファイルを新規作成して、ファイル内に 「Python学習中」 を保存しています。

①からコードを見ていきましょう。

コード
概要
text = 'Python学習中'
ファイルに保存するテキストを変数 text に代入
file = open('test1.txt', 'w')
open()関数で 新規 test1.txt ファイルの作成、そしてそれをコード file として管理
file.write(text)
 先ほど作成した test1.txt に 変数text を書き込み、保存
file.close()
 書き込み作業の終了宣言

②番目のコード

コード
概要
text = 'Python学習中'
ファイルに保存するテキストを変数 text に代入
with open('test2.txt', 'w') as f: open()関数で 新規 test2.txt ファイルの作成、そしてそれを変数 f として管理。with文の為、 close() 不要に。
    f.write(text)  変数 f  に 変数 text を書き込み、保存

③番目のコード

コード
概要
f = open('test3.txt','w') open()関数で 新規 test3.txt ファイルの作成、そしてそれを変数 f として管理
f.write('Python学習中') h変数 f に write() 関数内の文字を書き込み。
    f.close() 書き込み作業終了

これら3つの違いとしては、

  • 行末に close() があるかどうか
  • 文字データの取り扱い、変数管理か直接入力か

一文字一文字読んでいけば決して難しくないので、焦らずに write()関数 の表現方法を把握しておきましょう。

書き込めるデータの種類

参考書やチュートリアルをみると、取り扱いデータはどれもテキスト(.txt)ですが、実は他のファイル形式も書き込み可能です。 open()関数でファイル名を指定する際に、ファイルの拡張子を .py とか .docx 、 .xls などにすると任意のファイル形式に保存可能。

f = open('挨拶の手紙.docx','w')
f.write('こんにちは')
f.close()

<< 結果 >>

image

文字列以外の書き込みについて

ここまでご紹介してきたデータ書き込みの write()関数 ですが、実は文字列しか書き込みできません。数値やリスト型などはチョット違った方法でデータ書き込みを行います。

数値のデータ書き込み

なんだかの数値データを取得して、テキストファイルに書き込む場合を想定したいと思います。

number = 100000000

file = open('test.txt', 'w')

file.write(str(number))
file.close()

<< 結果 >>

image

<< 説明 >>

入力対象データ 100000000 は数値で、従来の write() 関数ではエラーに。そこで write() 関数でデータを取り扱う時に文字列に型変換(str())。この一工程で数値データもデータファイルに保存することができますね。

リスト型の書き込み

ファイルに書き込みたいデータがリスト型の場合は、writelines()関数 を使います。

print('一回だけの一人チャットを記録')
a = input('Aさん:')
b = input('Bさん:')

string = ['Aさん:', a, '\n', 'Bさん:', b]

file = open('Lines.txt', 'w')

file.writelines(string)
file.close()

<< 結果 >>

image

<< 説明 >>

書き込み対象データの変数 string は、リスト型。こちらを writelines() で書き込み。よかったら write()関数を使うとどうなるか、試してみて下さい。

書き込みデータの追加

ケースによっては、データを順番に追加していきたい場合もあるでしょう。そんな時は、 write()関数 のカッコ内の write('●●.txt', 'w')write('●●.txt', 'a') に変えると要素を追加していけます。

例えば、GUIアプリで顧客データを追加していく場合を想定してみましょう。

filename = 'guest_book.txt'

with open(filename, 'a') as file_object:
    while True:
        name = input("フルネームをご記入下さい?\n(終了は 'end' を入力): \n→ ")
        if name == 'end':
            break
        print("いらっしゃいませ " + name.title() + "さん !")
        file_object.write(name.title() + " 来店済み\n")

<< 結果 >>

image

write()関数 で 'w' を使うとデータが上書きされますが、 'a' を使うと末尾に追加。

まとめ

Pythonを使ったデータ書き込み、意外と細かいルールがありますね。ちなみにデータベース(MySQLなど)にデータを書き込む場合は、write()関数ではなく、execute()関数 などを使用。Pythonで扱えるデータ範囲が広がると、何かいろいろできそうな気になってきますよね。

と、その前に「実は変数、よく分かっていない」「文字列や数値、リスト型ってナニ?」と正直思われている方、一度Pythonの基礎学習を検討してみませんか? オンライン × マンツーマンのプログラミングレッスン CodeCamp なら今の生活をあまり犠牲にすることなくPythonスキルを習得できると思いますよ。

関連記事

オシママサラ
この記事を書いた人
オシママサラ
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp