본문 바로가기
Development/Python

[Python] argument 인자 입력 받아서 실행하기

by 성딱이 2021. 12. 2.
반응형
1. argparse 이용 (argument를 특정해 줌)
# argv_test1.py

import os, sys, pickle
import argparse, sys

parser = argparse.ArgumentParser()
parser.add_argument('-name', help=' : Please set the name') 
parser.add_argument('-option', help=' : train or prediction', default='train')
parser.add_argument('-stt_date', help=' : Please set the start date of prediction(default)', default='2021-11-02')
parser.add_argument('-end_date', help=' : Please set the last date of prediction(default)', default='2021-12-02') 
args = parser.parse_args()

def main(argv, args) : 
    print('\n')
    print(f'argv : ', argv)
    print(f'args : ', args)
    
    print(f'args.name : ', args.name)
    print(f'args.option : ', args.option)
    print(f'args.stt_date : ', args.stt_date)
    print(f'args.end_date : ', args.end_date)
    print('\n')
    
    
if __name__ == '__main__' :
    argv = sys.argv
    main(argv, args)

쉘에서 python 파일을 실행시킬 때 인자 명과 인자 값을 차례로 입력해주면서 나아가면 된다.

(base) admin@admin:/jh$ python argv_test1.py -name juhyeon_test -option Yap
argv :  ['argv_test1.py', '-name', 'juhyeon_test', '-option', 'Yap']
args :  Namespace(end_date='2021-12-02', name='juhyeon_test', option='Yap', stt_date='2021-11-02')
args.name :  juhyeon_test
args.option :  Yap
args.stt_date :  2021-11-02
args.end_date :  2021-12-02

 

인자에 미리 설정해 뒀던 도움말 옵션을 보고싶다면!

(base) admin@admin:/jh$ python argv_test1.py -h
usage: argv_test1.py [-h] [-name NAME] [-option OPTION] [-stt_date STT_DATE] [-end_date END_DATE]

optional arguments:
  -h, --help          show this help message and exit
  -name NAME          : Please set the name
  -option OPTION      : train or prediction
  -stt_date STT_DATE  : Please set the start date of prediction(default)
  -end_date END_DATE  : Please set the last date of prediction(default)

 

 

2. sys.argv (argument의 순서대로 인식)
# argv_test2.py

import os, sys, pickle
import argparse, sys

def main(argv) : 
    print('\n')
    print(f'argv : ', argv)
    print('\n')
    
if __name__ == '__main__' :
    argv = sys.argv
    main(argv)
(base) admin@admin:/jh$ python argv_test2.py juhyeon_test Yap 2021-11-02 2021-12-02
argv :  ['argv_test2.py', 'juhyeon_test', 'Yap', '2021-11-02', '2021-12-02']

 

실제로 사용을 하게 되면 첫 번째 방법을 사용 할 것 같다. 인자를 순서대로 인식 시키는 것은 코드가 잘못 돌아갈 확률이 너무 높을 것 같다. 따라서 argument를 명확하게 지정해 주는 첫 번째 방법으로 평소에 잘 활용하자.

 

 

 

반응형

댓글