728x90
반응형
Python os
, sys
를 활용한 시스템 관리
Python은 강력한 표준 라이브러리를 제공하며, 이 중 os
와 sys
모듈은 시스템 관리 및 운영 체제와의 상호 작용에 매우 유용합니다. 이번 포스팅에서는 os
와 sys
모듈의 주요 기능을 살펴보고, 실제 활용 가능한 예제를 통해 시스템 관리 작업을 어떻게 수행할 수 있는지 알아보겠습니다.
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. os
와 sys
를 활용한 실용적 예제
(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의 os
와 sys
모듈은 시스템 관리 및 운영 체제와의 상호 작용에서 강력한 도구를 제공합니다. 본 포스팅에서 소개한 기능과 예제들을 참고하여, 효율적으로 시스템 관리 작업을 수행해 보세요. 더 복잡한 작업이 필요한 경우, shutil
, subprocess
등의 모듈을 함께 활용하는 것도 고려해볼 수 있습니다.
728x90
반응형
'Python > Python 심화' 카테고리의 다른 글
Python 파일 입출력과 pathlib (0) | 2025.07.26 |
---|---|
Python re를 이용한 정규 표현식 (0) | 2025.07.25 |
Python collections 모듈을 이용한 데이터 구조 (0) | 2025.07.23 |
Python `datetime`과 시간 관리 (0) | 2025.07.22 |
Python 다중 스레드와 병렬 처리 (0) | 2025.07.21 |