みかん姫のみかん箱

どこかの知らない誰かの何気ないメモが好きな方(それはわたし)へ

Python | 標準入力からでもコマンドライン引数からでもインプットできるようにする

STDINからJSONを流し込んでも、引数にJSONファイルを指定してもよい方法。

使うモジュール

  • select
  • argparse
$ cat AAA.json | python3 program.py
$ python3 program.py AAA.json
import sys
import argparse
import select
import json

def main():
    desc = 'description...'
    parser = argparse.ArgumentParser(description=desc)
    parser.add_argument('JSON_FILE', nargs='?', help='JSON file')
    args = parser.parse_args()
    f_json = args.JSON_FILE
    if f_json is not None:
        with open(f_json) as f:
            data1 = json.load(f)
    if select.select([sys.stdin], [], [], 0)[0]:
        data2 = json.load(sys.stdin)
    ...