본문 바로가기

파이썬 os 모듈 완벽 가이드: 운영 체제와의 상호작용 방법

발견의끝 2024. 12. 3.

파이썬 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) 경로 ab를 결합하여 플랫폼에 맞는 경로를 생성합니다.
os.path.exists(path) path가 존재하는지 여부를 확인합니다.
os.getenv(varname) 환경 변수 varname의 값을 반환합니다.
os.environ["VAR"] = value 환경 변수 VARvalue로 설정합니다.
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 모듈은 파일 및 디렉토리 관리, 환경 변수 설정, 시스템 명령 실행 등 다양한 운영 체제 작업을 수행하는 데 매우 유용합니다. 위의 예제를 활용하여 더욱 효율적이고 플랫폼 독립적인 코드를 작성해 보세요.


 

 

 

댓글