- 更新日: 2019年07月01日
- 公開日: 2018年07月24日
Pythonでファイルにデータを書き込んでいく方法
Pythonの基本メソッドの一つである write()
。
基本をマスターしておけば、ファイルの自動作成やデータ保存のスキルが向上。
今回は、 write()
のいろいろな書き方やチョットしたポイントをご紹介。
Pythonでアプリ開発を考えている方や自動化処理を考えている方、Python全般を習得しようとしている方、参考になると思います。逆に、人工知能やデータ解析目的にPythonを学習している方にとっては、あまり参考にならないかもしれません。
【Python入門】Pythonでファイルにデータを書き込んでいこう
Pythonのデータ書き込みについて
Pythonでデータをファイルに書き込みたい時は、以下のようなケースでしょう。
- データ保存
- ファイルの自動作成
- ゲーム開発
- GUIアプリの開発
- 音声の自動文字起こし内容の保存
これらの場面すべてにおいて write()
関数 を使用可能。
例えば、文字入力した内容をテキストファイルに記録する場合は、
x = input('入力よ→ ')
file = open('InputText.txt', 'w')
file.write(x)
file.close()
<< 結果 >>
それでは次に 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()
<< 結果 >>
この①②③のコードすべて 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()
<< 結果 >>
文字列以外の書き込みについて
ここまでご紹介してきたデータ書き込みの write()
関数 ですが、実は文字列しか書き込みできません。数値やリスト型などはチョット違った方法でデータ書き込みを行います。
数値のデータ書き込み
なんだかの数値データを取得して、テキストファイルに書き込む場合を想定したいと思います。
number = 100000000
file = open('test.txt', 'w')
file.write(str(number))
file.close()
<< 結果 >>
<< 説明 >>
入力対象データ 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()
<< 結果 >>
<< 説明 >>
書き込み対象データの変数 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")
<< 結果 >>
write()
関数 で 'w' を使うとデータが上書きされますが、 'a' を使うと末尾に追加。
\AIエンジニアに必要なスキルが身に付く/
まとめ
Pythonを使ったデータ書き込み、意外と細かいルールがありますね。ちなみにデータベース(MySQLなど)にデータを書き込む場合は、write()
関数ではなく、execute()
関数 などを使用。Pythonで扱えるデータ範囲が広がると、何かいろいろできそうな気になってきますよね。
と、その前に「実は変数、よく分かっていない」「文字列や数値、リスト型ってナニ?」と正直思われている方、一度Pythonの基礎学習を検討してみませんか? オンライン × マンツーマンのプログラミングレッスン CodeCamp なら今の生活をあまり犠牲にすることなくPythonスキルを習得できると思いますよ。
CodeCamp提供のPythonデータサイエンスコース
当メディアを運営しているCodeCampではPythonデータサイエンスコースを現役エンジニアのマンツーマンレッスンという形で提供しています。このコースの特徴は
- 数学的な知識がない状態から実務で使えるプログラミングスキルを獲得できる
- 「データ収集」「データ加工」「モデル構築」を習得できる
- 企業のマーケター向けの研修にも取り入れられているカリキュラム
詳細はこちらから確認してみてください!▶︎https://www.lp.codecamp.jp/python
- この記事を書いた人
- オシママサラ