Python

3개의 글

자동화·AI

Python subprocess.run 사용법: 종료 코드·시간 초과·실행 실패 처리하기

요약외부 명령이 끝났다는 사실만으로 작업 성공을 판단할 수는 없습니다. Python subprocess.run에서 비정상 종료, 시간 초과, 실행 자체의 실패를 구분해 후속 작업을 제어하는 예시를 정리합니다.문제와 배경백업·파일 전송·점검 프로그램을 자동화할 때 실패한 외부 명령 뒤로 다음 단계가 계속 진행되면 잘못된 결과가 정상 처리될 수 있습니다. 실행 결과를 확인하고 실패 유형별로 중단하는 흐름이 필요합니다.핵심 내용check=True는 명령이 0이 아닌 종료 코드를 반환하면 CalledProcessError를 발생시킵니다. timeout을 지정한 subprocess.run은 제한 시간을 넘기면 직접 실행한 자식 프로세스를 종료하고 기다린 뒤 TimeoutExpired를 발생시킵니다.실행 파일을 찾..

글 읽기

자동화·AI

Python os.replace 사용법: 임시 파일로 JSON 결과를 저장하고 교체하기

요약: 결과 파일을 직접 덮어쓰는 도중 프로그램이 종료되면 다음 작업이 불완전한 파일을 읽을 수 있다. 같은 디렉터리에 임시 파일을 완성한 뒤 교체하는 패턴과 그 한계를 설명한다.문제와 배경예약 작업이 JSON 결과를 저장하고 다른 프로그램이 이를 읽는 구조를 생각해 보자. 기존 파일을 쓰기 모드로 연 뒤 중간에 실패하면 정상 결과까지 잃을 수 있다.핵심 내용os.replace()는 대상 파일이 있으면 권한이 허용하는 경우 교체한다. 서로 다른 파일시스템 사이에서는 실패할 수 있으며, 공식 문서는 성공한 이름 변경의 원자성을 설명한다. 따라서 임시 파일을 대상과 같은 디렉터리에 만드는 방식이 유용하다.다만 원자적인 교체와 정전 이후의 영속성, 여러 작성자 간 충돌 방지는 서로 다른 문제다.실무 코드 예시..

글 읽기

자동화·AI

Python RotatingFileHandler 사용법: 자동화 로그 크기와 보관 개수 제한하기

요약: 예약 작업이 남기는 로그를 한 파일에 계속 추가하면 디스크를 채울 수 있다. Python 표준 라이브러리의 크기 기반 로그 회전을 적용하고, 보관 용량과 동시 실행 조건을 확인하는 방법을 정리한다.문제와 배경자동화는 정상 실행 중에도 많은 로그를 남긴다. 장애가 반복되면 출력량이 늘어나 로그 때문에 다른 업무까지 영향을 받을 수 있다.핵심 내용RotatingFileHandler는 파일 크기를 기준으로 로그를 회전시킨다. 크기 기반 회전을 사용하려면 maxBytes와 backupCount를 모두 0보다 크게 지정해야 한다. 회전 시 기존 파일은 번호가 붙은 백업 파일로 관리된다.실무 코드 예시다음은 단일 프로세스 설명용 예시다.운영 적용 전: 기존 로그와 로깅 설정을 백업하고, 테스트 환경에서 회전..

글 읽기