파이썬 os 모듈 완벽 가이드: 운영 체제와의 상호작용 방법
파이썬 os 모듈의 활용
방법과 주요 기능
파이썬의 os 모듈은 운영 체제와의 상호작용을 가능하게 하는 강력한 내장 모듈입니다. 이를 통해 파일 및 디렉토리 작업, 환경 변수 관리, 시스템 명령 실행 등 다양한 작업을 수행할 수 있습니다. 이 모듈은 운영 체제에 구애받지 않고 동작하기 때문에 플랫폼 독립적인 코드를 작성하는 데 매우 유용하며, 자동화 스크립트나 시스템 관리 작업에서 필수적인 역할을 합니다.
이 글에서는 os 모듈의 주요 기능과 실제 활용법을 소개합니다. 초보자부터 숙련된 개발자까지 모두 유용하게 활용할 수 있도록 다양한 코드 예제와 함께 심도 깊은 설명을 제공합니다.
Python os 모듈에서 자주 사용하는 명령어
명령어 | 설명 |
---|---|
os.getcwd() |
현재 작업 디렉토리 경로를 반환합니다. |
os.chdir(path) |
작업 디렉토리를 path 로 변경합니다. |
os.listdir(path) |
path 내의 파일 및 디렉토리 목록을 반환합니다. |
os.mkdir(path) |
새로운 디렉토리를 생성합니다. |
os.rmdir(path) |
빈 디렉토리를 삭제합니다. |
os.remove(path) |
파일을 삭제합니다. |
os.rename(src, dst) |
파일 또는 디렉토리의 이름을 변경합니다. |
os.path.join(a, b) |
경로 a 와 b 를 결합하여 플랫폼에 맞는 경로를 생성합니다. |
os.path.exists(path) |
path 가 존재하는지 여부를 확인합니다. |
os.getenv(varname) |
환경 변수 varname 의 값을 반환합니다. |
os.environ["VAR"] = value |
환경 변수 VAR 를 value 로 설정합니다. |
os.system(command) |
시스템 명령어 command 를 실행합니다. |
os.walk(path) |
path 내 모든 디렉토리와 파일을 재귀적으로 탐색합니다. |
os.path.abspath(path) |
path 의 절대 경로를 반환합니다. |
os 모듈의 주요 기능
파일 및 디렉토리 작업
os 모듈은 파일 및 디렉토리를 생성, 삭제, 이동, 복사하는 작업을 간편하게 처리할 수 있습니다. 이를 통해 파일 관리 작업을 손쉽게 자동화할 수 있습니다.
import os
# 현재 작업 디렉토리 확인
print(os.getcwd())
# 새 디렉토리 생성
os.mkdir('new_folder')
# 디렉토리 삭제
os.rmdir('new_folder')
# 파일 경로 합치기
file_path = os.path.join('folder', 'file.txt')
print(file_path) # folder/file.txt
이 코드는 현재 작업 디렉토리를 확인하고, 새 디렉토리를 생성 및 삭제하며, 플랫폼 독립적으로 파일 경로를 생성하는 예제를 보여줍니다.
환경 변수 다루기
환경 변수는 시스템의 설정 값을 코드에서 활용할 때 유용합니다. os 모듈은 이러한 환경 변수를 읽고 설정하는 기능을 제공합니다.
# 환경 변수 가져오기
home_dir = os.getenv('HOME')
print(f"Home Directory: {home_dir}")
# 환경 변수 설정
os.environ['MY_VAR'] = 'Hello World'
print(os.getenv('MY_VAR')) # Hello World
환경 변수를 설정하면, 이를 통해 애플리케이션 설정이나 경로를 동적으로 변경할 수 있습니다. 이는 다양한 운영 환경에서 코드의 유연성을 높이는 데 중요합니다.
프로세스 작업
os 모듈을 사용하면 시스템 명령어를 실행하거나 현재 프로세스와 관련된 정보를 확인할 수 있습니다.
# 시스템 명령 실행
os.system('echo Hello World')
# 현재 프로세스 ID
print(os.getpid())
# 사용자 ID 가져오기
print(os.getuid()) # Unix 기반 OS에서만 동작
특히 시스템 명령 실행 기능은 스크립트를 통해 운영 체제를 제어할 수 있도록 해줍니다.
파일 및 디렉토리 정보 확인
파일이 존재하는지, 디렉토리인지 파일인지 여부를 확인하거나 접근 권한을 점검할 수 있습니다.
file_path = 'example.txt'
# 파일 존재 여부 확인
if os.path.exists(file_path):
print("File exists")
# 파일인지 디렉토리인지 확인
if os.path.isfile(file_path):
print("It's a file")
elif os.path.isdir(file_path):
print("It's a directory")
이 기능은 파일 및 디렉토리를 다루는 작업에서 안전성을 확보하는 데 중요한 역할을 합니다.
경로 관련 작업
운영 체제마다 다른 경로 구조를 다루는 작업을 간단하게 처리할 수 있습니다.
# 절대 경로 변환
absolute_path = os.path.abspath('example.txt')
print(absolute_path)
# 경로 분리
directory, file_name = os.path.split(absolute_path)
print(f"Directory: {directory}, File: {file_name}")
# 파일 확장자 추출
name, ext = os.path.splitext('example.txt')
print(f"Name: {name}, Extension: {ext}")
이 코드는 파일 경로를 처리하는 데 필요한 기본적인 작업을 보여줍니다.
os 모듈 활용 팁
임시 파일 및 디렉토리 생성
임시 파일이나 디렉토리는 일정 시간 동안만 필요한 데이터를 저장하는 데 유용합니다.
import tempfile
# 임시 파일 생성
with tempfile.NamedTemporaryFile(delete=True) as temp_file:
print(f"Temporary file created: {temp_file.name}")
temp_file.write(b'This is a temporary file.')
# 임시 디렉토리 생성
with tempfile.TemporaryDirectory() as temp_dir:
print(f"Temporary directory created: {temp_dir}")
임시 파일은 프로그램 종료 시 자동으로 삭제되므로, 임시 데이터를 다룰 때 안전하게 사용할 수 있습니다.
파일 크기 및 속성 확인
파일의 크기, 생성 및 수정 시간 등의 속성을 확인하는 작업은 데이터 관리에서 자주 사용됩니다.
# 파일 크기 확인
file_size = os.path.getsize('example.txt')
print(f"File size: {file_size} bytes")
# 파일 수정 시간
import time
mod_time = os.path.getmtime('example.txt')
print(f"Last modified: {time.ctime(mod_time)}")
파일의 속성을 활용하면 효율적인 파일 관리와 모니터링이 가능합니다.
플랫폼에 따른 동작 처리
os 모듈은 다양한 운영 체제를 지원하므로 특정 플랫폼에 적합한 코드를 작성할 때 유용합니다.
# 운영 체제 확인
if os.name == 'posix':
print("Running on Unix/Linux/MacOS")
elif os.name == 'nt':
print("Running on Windows")
이 코드는 특정 운영 체제에서만 동작하도록 코드를 제한하거나 기능을 분기할 때 유용합니다.
실용적인 os 모듈 사용 예제
디렉토리 내 파일 목록 출력
특정 디렉토리 내의 파일과 디렉토리를 출력하는 코드는 파일 관리 자동화에 유용합니다.
# 현재 디렉토리 파일 및 폴더 출력
for item in os.listdir('.'):
if os.path.isfile(item):
print(f"File: {item}")
elif os.path.isdir(item):
print(f"Directory: {item}")
재귀적으로 디렉토리 탐색
os.walk를 사용하면 디렉토리 구조를 탐색하며 파일 작업을 수행할 수 있습니다.
# 디렉토리와 하위 디렉토리 탐색
for root, dirs, files in os.walk('.'):
print(f"Current Directory: {root}")
print(f"Sub-directories: {dirs}")
print(f"Files: {files}")
시스템 명령어 실행 결과 가져오기
os.popen을 통해 시스템 명령어의 실행 결과를 파이썬에서 처리할 수 있습니다.
# 시스템 명령 실행 결과 읽기
with os.popen('ls -l') as stream:
output = stream.read()
print(output)
결론
os 모듈은 파일 및 디렉토리 관리, 환경 변수 설정, 시스템 명령 실행 등 다양한 운영 체제 작업을 수행하는 데 매우 유용합니다. 위의 예제를 활용하여 더욱 효율적이고 플랫폼 독립적인 코드를 작성해 보세요.
'코딩 > PYTHON' 카테고리의 다른 글
파이썬 파일 처리 가이드: 입출력부터 데이터 관리까지 요약 (0) | 2024.12.05 |
---|---|
파이썬 : 함수와 모듈 예제와 설명 (0) | 2024.12.02 |
파이썬 논리 연산과 조건문 조합 (0) | 2024.11.30 |
파이썬 반복문: 제어 흐름과 논리 (0) | 2024.11.30 |
파이썬 조건문: 제어 흐름과 논리 (1) | 2024.11.29 |
댓글