こんにちは。のっくん(@yamagablog)です。
今日はPythonでファイルを読み書きする方法を解説します。
「Pythonでファイルに文字を保存したい」
「Pythonで文字列を読み込みたい」
そんな方に読んでいただければと思います。
目次
ファイルを読む
適当なテキストファイルを作って読み込んでみます。
open_file = open('point.txt') raw_data = open_file.read() open_file.close() print(raw_data)
出力は以下の通り。
Nobuo Yamada,100,20,29 Keisuke Honda,80,89,20 Yu Uchida,23,67,43
close()を書くのが面倒って場合は以下のように書けます。
with open('point.txt') as open_file: raw_data = open_file.read() #インデントから抜けるとファイルを自動的に閉じる print(raw_data)
ファイルに書く
書くときは、writeを使います。
write_file = open('output.txt', 'w') write_file.write('Hello_World\n') write_file.write('Hello_Python!\n') write_file.close()
closeするまで何度もwriteが呼び出せます。「\n」は改行を意味します。
Tips
Macの日本語配列キーボードの場合バックスラッシュを入力するには、「option+¥」です
ファイルを読むときと同様に以下のようにも書けます。
with open('output.txt', 'w') as write_file: write_file.write('Hello_World\n') write_file.write('Hello_Python!\n')
読んだデータを辞書に保存する
さて、少し応用してみましょう。
以下のデータを読んで辞書に保存します。
Takeo Suzuki:100,29,30 Masaki Ueda:32,45,67 Yoshito Okubo:34,56,78
[speech_bubble type=”ln” subtype=”L1″ icon=”ilust/shinpai_man.png” name=”男の子”]データを辞書に保存するってどうやるんだろう。
[/speech_bubble] [speech_bubble type=”ln” subtype=”L1″ icon=”profile_face.png” name=”のっくん”]まず、データを行ごとに分割してみよう。splitlinesを使うよ!
[/speech_bubble]
with open('point2.txt') as open_file: raw = open_file.read() # 各行のリストを作る point = raw.splitlines() print(point)
['Takeo Suzuki:100,29,30', 'Masaki Ueda:32,45,67', 'Yoshito Okubo:34,56,78']
[speech_bubble type=”ln” subtype=”L1″ icon=”profile_face.png” name=”のっくん”]うまく行ごとに分割できたみたいだね。次は名前と点数の部分を分割してみよう。splitを使うよ。
[/speech_bubble]
#読み込んだデータを辞書に追加する p_dict = {} for line in point: name,points_str = line.split(':') p_dict[name] = points_str print(p_dict)
{'Takeo Suzuki': '100,29,30', 'Masaki Ueda': '32,45,67', 'Yoshito Okubo': '34,56,78'}
[speech_bubble type=”ln” subtype=”L1″ icon=”ilust/necchusyou_face_boy1.png” name=”男の子”]辞書として保存できたみたい![/speech_bubble]
まとめ
今日のまとめ
・データを読むときはread,書くときはwriteを使おう
・ファイルを閉じるときはwithを使うと便利
・データを分割するときはsplitlines,splitを使おう
・ファイルを閉じるときはwithを使うと便利
・データを分割するときはsplitlines,splitを使おう
参考