📃
Pythonのargparseで標準入出力を使いたい
やりたいこと
argparseを使う際に標準入出力を使いたい。よくよく見たらargparseのページに方法が載ってました。
ソースコード
Example としては -i
で入力したtsvを -o
で出力します。
input.tsvは以下としました。
c1 c2
r1 7 6
r2 8 9
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import pandas as pd
def parser_setting():
parser = argparse.ArgumentParser(prog='example_argparse.py',
description='description')
parser.add_argument('-i', '--path_in_tsv',
action='store',
type=argparse.FileType('r'),
default='-',
help='File path of input tsv')
parser.add_argument('-o', '--path_out_tsv',
action='store',
type=argparse.FileType('w'),
default='-',
help='File path of output tsv')
args = parser.parse_args()
return vars(args)
def main(args):
# preprocess - read configs
path_in_tsv = args['path_in_tsv']
path_out_tsv = args['path_out_tsv']
# main - input
df = pd.read_csv(path_in_tsv, sep='\t', index_col=0)
# main - output
df.to_csv(path_out_tsv, sep='\t')
if __name__ == '__main__':
main(parser_setting())
Tips
位置引数の場合は nargs='?'
または nargs='*'
とデフォルト値を指定することで同様にすることができます。
parser.add_argument('path_in_tsv',
action='store',
nargs='?',
type=argparse.FileType('r'),
default='-',
help='File path of input tsv')
Discussion