운영체제 상호작용을 위한 os 모듈
파이썬의 os 모듈은 프로그램이 운영체제와 직접적으로 소통할 수 있도록 다양한 기능을 제공합니다.
import os
현재 작업 디렉토리를 확인하려면 os.getcwd()를 사용합니다.
특정 디렉토리 내 파일과 폴더 목록을 얻으려면 os.listdir() 함수를 호출합니다.
단일 파일을 삭제할 때는 os.remove()를 이용하며, 여러 디렉토리를 제거하려면 os.removedirs(r"c:\python")를 사용할 수 있습니다.
경로가 파일인지 확인하려면 os.path.isfile(), 디렉토리인지 검사하려면 os.path.isdir()를 사용합니다.
절대 경로 여부를 판단하려면 os.path.isabs(), 실제 존재하는 경로인지 확인하려면 os.path.exists()를 사용합니다.
경로에서 디렉토리명과 파일명을 분리하려면 os.path.split()를 사용합니다:
os.path.split('/home/swaroop/byte/code/poem.txt')
# 결과: ('/home/swaroop/byte/code', 'poem.txt')
확장자와 파일명을 분리하려면 os.path.splitext()를 사용합니다:
os.path.splitext('/usr/local/test.py')
# 결과: ('/usr/local/test', '.py')
디렉토리 경로만 추출하려면 os.path.dirname(), 절대 경로를 얻으려면 os.path.abspath(), 파일명만 가져오려면 os.path.basename()를 사용합니다.
쉘 명령어를 실행하려면 os.system()을 사용할 수 있으며, 환경 변수 값을 읽으려면 os.getenv("HOME")를 사용합니다.
모든 환경 변수를 확인하려면 os.environ을 참조하고, 임시로 환경 변수를 설정하려면 os.environ.setdefault('HOME','/home/admin')를 사용합니다.
운영체제별 줄바꿈 문자를 얻으려면 os.linesep을 사용합니다:
print(f"Hello{os.linesep}World")
운영체제 플랫폼 정보는 os.name으로 확인할 수 있습니다. 윈도우에서는 'nt', 리눅스/유닉스 계열에서는 'posix'를 반환합니다.
파일 이름 변경은 os.rename(old, new)로 수행할 수 있고, 다중 디렉토리 생성은 os.makedirs(d:\\c/d/e/f/g) 또는 os.makedirs(c/d/e/f/g)로 가능합니다.
단일 디렉토리는 os.mkdir("testdir")로 생성할 수 있으며, 파일 속성을 조회하려면 os.stat(file)를 사용합니다:
print(os.stat("module.py"))
- 접근 시간 (
st_atime): 2023-03-05 10:54:39 (UTC) → st_atime=1701763679 - 수정 시간 (
st_mtime): 2023-03-05 10:54:38 (UTC) → st_mtime=1701763678 - 생성 시간 (
st_ctime): 2023-03-04 08:16:08 (UTC) → st_ctime=1701669768
파일 권한 및 타임스탬프 수정에는 os.chmod(file)를 사용하고, 파일 크기를 확인하려면 os.path.getsize(filename)를 사용합니다.
디렉토리와 파일명을 결합하려면 os.path.join(dir, filename)를 사용하며, 작업 디렉토리를 변경하려면 os.chdir(dirname)를 호출합니다.
터미널 크기를 확인하려면 os.get_terminal_size()를 사용하고, 특정 프로세스를 종료시키려면 os.kill(10884, signal.SIGKILL)를 사용합니다.
인터프리터 환경 관리를 위한 sys 모듈
sys 모듈은 파이썬 인터프리터와 관련된 기능들을 제공하는 핵심 표준 라이브러리입니다.
- 명령줄 인자 처리:
sys.argv는 명령줄에서 전달된 인자들을 담은 리스트입니다. 첫 번째 요소는 스크립트 이름이며, 이후 요소들은 사용자가 입력한 인자들입니다. - 모듈 검색 경로:
sys.path는 모듈을 찾기 위해 파이썬이 탐색하는 경로들의 리스트입니다. - 표준 입출력 스트림:
sys.stdin,sys.stdout,sys.stderr는 각각 표준 입력, 출력, 에러 스트림에 해당하는 파일 객체입니다. - 프로그램 종료:
sys.exit()는 프로그램을 종료시키며 선택적으로 상태 코드를 전달할 수 있습니다. - 예외 정보 관리:
sys.exc_info()는 현재 처리 중인 예외 정보를 튜플 형태로 반환합니다. - 버전 정보 확인:
sys.version은 파이썬 버전 문자열을 포함하며,sys.version_info는 주 버전, 부 버전, 마이크로 버전 번호를 담은 튜플입니다. - 모듈 관리:
sys.modules는 현재 로드된 모든 모듈을 저장하는 딕셔너리입니다. - 기타 기능:
sys.platform(플랫폼 정보),sys.getsizeof()(객체 크기) 등 다양한 추가 기능이 있습니다.
sys.path는 다음과 같이 확인할 수 있습니다:
import sys
print(sys.path)
이 리스트는 일반적으로 다음 위치들을 포함합니다:
- 실행 중인 스크립트의 디렉토리
- 표준 라이브러리가 설치된
Lib디렉토리 PYTHONPATH환경 변수에 지정된 경로들- 기타 시스템 기본 경로들
모듈 검색 순서는 리스트 항목 순서에 따라 결정되므로, 필요한 경우 직접 경로를 추가할 수 있지만 권장되는 방법은 아닙니다.
sys.argv를 활용한 예제는 다음과 같습니다:
# example.py
import sys
print("스크립트 이름:", sys.argv[0])
print("입력 인자들:", sys.argv[1:])
명령줄에서 아래와 같이 실행하면:
python example.py arg1 arg2 arg3
다음과 같은 출력이 나옵니다:
스크립트 이름: example.py
입력 인자들: ['arg1', 'arg2', 'arg3']