Python/Python 심화

Python `os`, `sys`를 활용한 시스템 관리

임베디드 친구 2025. 7. 24. 19:27
728x90
반응형

Python os, sys를 활용한 시스템 관리

Python은 강력한 표준 라이브러리를 제공하며, 이 중 ossys 모듈은 시스템 관리 및 운영 체제와의 상호 작용에 매우 유용합니다. 이번 포스팅에서는 ossys 모듈의 주요 기능을 살펴보고, 실제 활용 가능한 예제를 통해 시스템 관리 작업을 어떻게 수행할 수 있는지 알아보겠습니다.


1. os 모듈: 운영 체제와 상호 작용

os 모듈은 파일 및 디렉터리 관리, 환경 변수 접근, 시스템 명령 실행 등 운영 체제와의 상호 작용을 제공합니다.

주요 기능 및 예제

(1) 현재 작업 디렉터리 확인 및 변경

import os

# 현재 작업 디렉터리 확인
current_dir = os.getcwd()
print(f"현재 작업 디렉터리: {current_dir}")

# 작업 디렉터리 변경
new_dir = "/path/to/new/directory"
os.chdir(new_dir)
print(f"변경된 작업 디렉터리: {os.getcwd()}")

(2) 파일 및 디렉터리 생성, 삭제

# 디렉터리 생성
os.makedirs("test_dir/sub_dir", exist_ok=True)
print("디렉터리 생성 완료")

# 파일 생성
file_path = "test_dir/example.txt"
with open(file_path, "w") as file:
    file.write("This is an example file.")
print(f"파일 생성: {file_path}")

# 파일 삭제
os.remove(file_path)
print(f"파일 삭제: {file_path}")

# 디렉터리 삭제
os.removedirs("test_dir/sub_dir")
print("디렉터리 삭제 완료")

(3) 환경 변수 관리

# 환경 변수 읽기
path_var = os.environ.get("PATH")
print(f"PATH 환경 변수: {path_var}")

# 환경 변수 설정
os.environ["MY_VAR"] = "Hello, World!"
print(f"MY_VAR 설정: {os.environ.get('MY_VAR')}")

(4) 시스템 명령 실행

# 시스템 명령 실행
exit_code = os.system("echo Hello from shell")
print(f"명령 실행 종료 코드: {exit_code}")

2. sys 모듈: 파이썬 인터프리터와 상호 작용

sys 모듈은 파이썬 인터프리터와의 상호 작용, 명령줄 인수 처리, 표준 입출력 제어 등을 제공합니다.

주요 기능 및 예제

(1) 명령줄 인수 처리

import sys

# 명령줄 인수 출력
print("명령줄 인수:", sys.argv)

# 특정 인수 사용
if len(sys.argv) > 1:
    print(f"첫 번째 인수: {sys.argv[1]}")
else:
    print("인수가 없습니다.")

(2) 표준 입출력 제어

# 표준 출력 재지정
original_stdout = sys.stdout
with open("output.txt", "w") as file:
    sys.stdout = file
    print("이 내용은 파일에 작성됩니다.")
sys.stdout = original_stdout
print("표준 출력이 복원되었습니다.")

(3) 예외 정보 확인

try:
    1 / 0
except ZeroDivisionError:
    error_type, error_value, traceback_info = sys.exc_info()
    print(f"예외 타입: {error_type}")
    print(f"예외 값: {error_value}")

(4) 파이썬 버전 및 경로 확인

# 파이썬 버전
print(f"파이썬 버전: {sys.version}")

# 모듈 검색 경로
print("모듈 검색 경로:")
for path in sys.path:
    print(path)

3. ossys를 활용한 실용적 예제

(1) 디스크 사용량 체크 스크립트

import os

def check_disk_usage(path):
    statvfs = os.statvfs(path)
    total = statvfs.f_blocks * statvfs.f_frsize
    available = statvfs.f_bavail * statvfs.f_frsize
    used = total - available
    print(f"총 용량: {total / (1024**3):.2f} GB")
    print(f"사용 중: {used / (1024**3):.2f} GB")
    print(f"사용 가능: {available / (1024**3):.2f} GB")

check_disk_usage("/")

(2) 로그 파일 관리 스크립트

import os
import sys

def archive_logs(log_dir, archive_dir):
    if not os.path.exists(archive_dir):
        os.makedirs(archive_dir)

    for log_file in os.listdir(log_dir):
        if log_file.endswith(".log"):
            full_path = os.path.join(log_dir, log_file)
            os.rename(full_path, os.path.join(archive_dir, log_file))
            print(f"아카이브 완료: {log_file}")

if len(sys.argv) < 3:
    print("사용법: python script.py <log_dir> <archive_dir>")
else:
    archive_logs(sys.argv[1], sys.argv[2])

4. 결론

Python의 ossys 모듈은 시스템 관리 및 운영 체제와의 상호 작용에서 강력한 도구를 제공합니다. 본 포스팅에서 소개한 기능과 예제들을 참고하여, 효율적으로 시스템 관리 작업을 수행해 보세요. 더 복잡한 작업이 필요한 경우, shutil, subprocess 등의 모듈을 함께 활용하는 것도 고려해볼 수 있습니다.

728x90
반응형