argparse
는 파이썬에서 커맨드라인 인수를 처리하기 위한 표준 라이브러리입니다. 이 라이브러리는 사용자가 스크립트에 전달하는 인수를 파싱하고 처리하는 기능을 제공합니다. 그러나 파이썬에서 긴 작업이나 대규모 프로젝트를 다룰 때, 코드에서 발생하는 로그 및 디버그 정보를 관리하는 것은 매우 중요합니다.
이 기술 블로그에서는 argparse
를 사용하여 인수의 추적과 로그 관리를 어떻게 수행할 수 있는지 살펴보겠습니다.
인수 추적
인수 추적은 argparse
를 사용하여 커맨드라인 인수를 처리하는 동안 어떤 인수가 전달되었는지 추적하는 것을 의미합니다. argparse
는 argparse.ArgumentParser()
클래스를 통해 인수를 처리하는 객체를 생성합니다.
다음은 간단한 예제코드입니다.
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--name', help='이름을 입력하세요.')
args = parser.parse_args()
print('이름:', args.name)
if __name__ == '__main__':
main()
위의 코드에서 argparse.ArgumentParser()
로 파서 객체를 생성하고, add_argument()
를 사용하여 --name
인자를 추가하였습니다. parse_args()
를 호출하여 인자를 파싱하고, args.name
을 통해 --name
인자의 값을 접근할 수 있습니다.
이제 다음과 같이 스크립트를 실행해보세요.
python script.py --name John
결과는 다음과 같습니다.
이름: John
이처럼 argparse
를 사용하면 커맨드라인에서 전달되는 인자를 간단하게 처리할 수 있습니다.
로그 관리
로깅은 코드를 실행하는 동안 발생하는 이벤트 및 디버그 정보를 기록하는 것을 의미합니다. 파이썬에서는 logging
이라는 표준 라이브러리를 제공하여 로깅 작업을 쉽게 수행할 수 있습니다.
다음은 logging
모듈을 사용하여 로그를 생성하고 기록하는 간단한 예제입니다.
import logging
def main():
logging.basicConfig(filename='app.log', level=logging.DEBUG)
logging.debug('디버그 메시지')
logging.info('인포 메시지')
logging.warning('경고 메시지')
if __name__ == '__main__':
main()
basicConfig()
를 사용하여 로그 파일 이름과 로그 레벨을 설정합니다. 로그 레벨은 DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
중 하나를 선택할 수 있습니다. 이후 logging.debug()
, logging.info()
, logging.warning()
과 같은 메소드를 사용하여 로그를 기록할 수 있습니다.
위의 코드를 실행하면 app.log
파일에 로그가 기록됩니다.
DEBUG:root:디버그 메시지
INFO:root:인포 메시지
WARNING:root:경고 메시지
인수 추적과 로그 관리의 결합
파이썬에서 argparse
와 logging
을 결합하여 커맨드라인 인수를 추적하고 로그를 관리할 수 있습니다. 예를 들어, 특정 파일을 처리하는 스크립트에서 --verbose
인자를 사용하여 디버그 로그를 출력하는 기능을 추가할 수 있습니다.
import argparse
import logging
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--file', help='파일 경로를 입력하세요.')
parser.add_argument('--verbose', action='store_true', help='디버그 로그를 출력합니다.')
args = parser.parse_args()
logging_level = logging.DEBUG if args.verbose else logging.INFO
logging.basicConfig(filename='app.log', level=logging_level)
logging.debug('디버그 메시지')
logging.info('인포 메시지')
if args.file:
process_file(args.file)
def process_file(file_path):
# 파일 처리 로직 작성
logging.info(f'파일 처리: {file_path}')
if __name__ == '__main__':
main()
위의 코드에서 --verbose
인자가 전달되면 디버그 로그를 출력합니다. 또한 process_file()
함수에서는 파일 처리 과정을 로그로 기록합니다.
스크립트를 다음과 같이 실행해보세요.
python script.py --file example.txt --verbose
결과는 다음과 같습니다.
INFO:root:인포 메시지
INFO:root:파일 처리: example.txt
DEBUG:root:디버그 메시지
이를 통해 argparse
와 logging
을 결합하여 커맨드라인 인수를 추적하고, 디버그 정보 및 로그를 효과적으로 관리할 수 있음을 확인할 수 있습니다.
이로써 argparse
인수의 추적과 로그 관리에 대한 간단한 소개를 마치겠습니다. argparse
와 logging
은 파이썬의 강력한 기능 중 일부입니다. 이들을 적절하게 활용하면 코드의 유지보수성을 향상시킬 수 있습니다.