Python - 文法 - ファイル入出力

 クラウディア
1. 概要
2. 入力
3. json 形式で読み書き

1. 概要

 ファイルの入出力の基本的な部分を・・・。  本ページは、下記のサイトを参考にさせていただきました(なんかバージョンがごちゃごちゃだなぁ)。
7. 入力と出力 — Python 3.5.4 ドキュメント」
「pprint --- データ出力の整然化 — Python 3.8.5 ドキュメント

2. 入力

 単純な、テキストファイルを1行ずつ読んでいくとして・・・。
いろはにほへと
ちりぬるを
わかよたれそ
つねならむ
うゐのおくやま
けふこえて
あさきゆめみし
ゑひもせす
 てな、テキストファイルが、「./text01.txt」という名前で存在するとします(実際に存在していますが・・・)。  1行ずつ読んで、奇数行のみを出力するとすれば、下記のようなソースでよいのかな・・・。
import os

file_name = os.path.dirname(__file__) + "/text01.txt"

num = 1

with open(file_name, 'r') as file:
    for line in file:
        if (num % 2):
            print(line.rstrip())

        num += 1



 10行目の「line.rstrip()」は、「python」の入力は、改行もきっちりとりこむし、「print」が、改行付きで出力するものだから、1行分空白行が空くのを防いでいます。  実行すると下記の結果が得られます。
いろはにほへと
わかよたれそ
うゐのおくやま
あさきゆめみし

3. json 形式で読み書き

 「json」に関しては、「JavaScript Object Notation - Wikipedia」をご参照ください。  「json」というモジュールを使えば、オブジェクトを「json」形式にシリアライズして読み書きできるというのです。
import json
import os

file_name = os.path.dirname(__file__) + "/text02.json"

dic =   {
        '住所' : '東京都 千代田区',
        '名前' : '東京 太郎',
        'ふりがな' : 'とうきょう たろう',
        '年齢' : 18,
        '性別' : '男',
        }

with open(file_name, 'w') as file:
    json.dump(dic, file)



 というソースを書いて実行すると、下記のファイルが作成されます。
{"\u4f4f\u6240": "\u6771\u4eac\u90fd \u5343\u4ee3\u7530\u533a", "\u540d\u524d": "\u6771\u4eac \u592a\u90ce", "\u3075\u308a\u304c\u306a": "\u3068\u3046\u304d\u3087\u3046 \u305f\u308d\u3046", "\u5e74\u9f62": 18, "\u6027\u5225": "\u7537"}
 これを読み込みます。
import json
import os
import pprint

file_name = os.path.dirname(__file__) + "/text02.json"

dic = {}

with open(file_name, 'r') as file:
    dic  = json.load(file)

pp = pprint.PrettyPrinter()
pp.pprint(dic)


 というソースを書いて実行すると、下記の結果が得られます。
{'ふりがな': 'とうきょう たろう', '住所': '東京都 千代田区', '名前': '東京 太郎', '年齢': 18, '性別': '男'}
 出力時に、ソートされているのかな?
 
 
カウンタバックグラウンド