[02. 문법] 2.8 실행 환경 - os, exec, subprocess, 예외(오류) 처리, 에러 종류
작성자 : kim2kie
(2023-02-19)
조회수 : 1769
[참조]
- 공학자를 위한 Python, 조정래, 2022: 2.7 실행 환경 관리
https://wikidocs.net/14659 - Dookie Kim, Python: From Beginning to Application, 2022
https://www.dropbox.com/s/oa86j9ap62esmtz/Python.pdf?dl=0
다양한 방법으로 파이썬을 실행한다.
(1) os 모듈
(2) 다른 파이썬 파일의 실행
(3) subprocess를 이용한 외부프로그램 실행
(4) 예외 처리
(5) 에러 종류
----------------------------
(1) os 모듈
- os는 운영체제(operating system) 기능에 대한 간단한 명령을 모아 놓은 기본 모듈이다.
-
Ex)
os.getcwd() # 현재 작업 디렉터리의 경로 확인. current work directory를 get한다.
os.chdir() # 주어진 디렉터리로 작업 경로 변경os.listdir() # 디렉터리를 리스트함
os.system(명령) # 해당 명령을 터미널에서 실행
os.mkdirs(), os.makedirs() #새 디렉터리 생성os.remove() # 파일 삭제
os.rmdir(), os.removedirs() # 디렉터리 제거os.rename(), os.renames(), replace() # 파일명 변경
os.join(), os.split() # 경로를 잇거나 분리
os.exsits(), os.isfile(), os.isdir() # 경로, 파일, 디렉터리의 존재 확인
[예제] data0 폴더에 있는 jpg 파일들을 data1 폴더로 이름을 바꾸어서 옮겨라.
코드 [Link]
(2) 다른 파이썬 파일의 실행
-
파일을 읽은 다음 exec(commandLines)와 같이 라인단위로 실행하는 명령어를 이용한다.
-
Ex)
f = open('myRCPile.py')
exec(f.read())
f.close()
(3) subprocess를 이용한 외부프로그램 실행
-
subprocess.run(,...)는 실행하고 끝날때까지 기다린다(wait).
-
Ex)
import subprocess
subprocess.run('notepad')
(4) 예외 처리
-
예외(exception)란 프로그램 실행 도중에 발생하는 오류(error)이다.
예를 들면, 0으로 나누기, 존재하지 않는 파일을 열려고 할 때 등이 있다.
이러한 예외를 처리할 수 있는 다양한 방법을 제공한다. -
.try-except 구문: try 블록 안에서 예외가 발생하면 except 블록이 실행됩니다.
-
Ex)
try:
# 예외 발생 가능한 코드
except 예외 종류1:
# 예외 종류1 처리 코드
except 예외 종류2:
# 예외 종류2 처리 코드
else:
# 예외가 발생하지 않았을 때 실행할 코드
finally:
# 예외 발생 여부에 상관 없이 항상 실행할 코드
(5) 에러 종류
-
AttributeError: 속성 오류. 객체가 소유한 속성에 접근할 때, 해당 속성이 존재하지 않는 경우 발생한다.
-
ImportError: import 오류. 모듈을 import 하는 과정에서 오류가 발생하는 경우 발생한다.
-
IndexError: 인덱스 오류. 시퀀스 자료형에서 인덱스 범위를 벗어난 경우 발생한다.
-
KeyError: 키 오류. 딕셔너리에서 존재하지 않는 키를 사용하는 경우 발생한다.
-
NameError: 이름 오류. 존재하지 않는 변수나 함수 이름을 사용하는 경우 발생한다.
-
SyntaxError: 구문 오류. 파이썬 코드 구문에 오류가 있는 경우 발생한다. 예) 괄호의 짝이 맞지 않는 경우 등이 있다.
-
TypeError: 타입 오류. 잘못된 타입의 값이 전달된 경우 발생한다. 예) 숫자와 문자열을 더하는 경우 등이 있다.
-
ValueError: 값 오류. 값을 잘못 전달하거나 처리하는 경우 발생
-
ZeroDivisionError: 0으로 나누기 오류. 숫자를 0으로 나누는 경우 발생한다.