Python os 모듈을 이용한 파일과 폴더 관리

Python os 모듈을 이용한 파일과 폴더 관리

Python
Python os 모듈을 이용한 파일과 폴더 관리
Author

gabriel yang

Published

October 5, 2024


Python에서 파일과 디렉토리를 관리하려면 os 모듈을 사용하는 것이 일반적입니다. 이 모듈은 파일 시스템과 상호 작용하기 위한 다양한 함수들을 제공하며, 운영 체제에 독립적으로 동작합니다. 즉, 동일한 코드로 Windows, macOS, Linux에서 모두 파일 및 폴더 작업을 수행할 수 있습니다.

1. os 모듈 임포트

먼저, os 모듈을 사용하기 위해 임포트합니다.

import os

2. 디렉토리 작업

2.1 현재 작업 디렉토리 확인

현재 작업 중인 디렉토리를 확인하려면 os.getcwd() 함수를 사용합니다.

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

2.2 디렉토리 변경

os.chdir() 함수를 사용하여 작업 디렉토리를 변경할 수 있습니다.

os.chdir('/path/to/directory')
print(f"작업 디렉토리가 변경되었습니다: {os.getcwd()}")

2.3 디렉토리 생성

os.mkdir() 함수를 사용하여 새 디렉토리를 만들 수 있습니다. 디렉토리가 이미 존재할 경우 오류가 발생하므로, 필요하다면 디렉토리 존재 여부를 먼저 확인하는 것이 좋습니다.

new_dir = 'new_folder'
if not os.path.exists(new_dir):
    os.mkdir(new_dir)
    print(f"디렉토리가 생성되었습니다: {new_dir}")
else:
    print(f"디렉토리가 이미 존재합니다: {new_dir}")

2.4 중첩된 디렉토리 생성

중첩된 디렉토리를 한 번에 만들려면 os.makedirs() 함수를 사용합니다. 이 함수는 상위 디렉토리가 없으면 자동으로 만들어줍니다.

nested_dir = 'parent_folder/child_folder'
os.makedirs(nested_dir, exist_ok=True)  # 디렉토리가 이미 있어도 오류 발생하지 않음
print(f"중첩된 디렉토리가 생성되었습니다: {nested_dir}")

2.5 디렉토리 내용 목록 가져오기

os.listdir()을 사용하여 특정 디렉토리의 파일과 폴더 목록을 가져올 수 있습니다.

directory_contents = os.listdir('.')
print("현재 디렉토리 내용:", directory_contents)

2.6 디렉토리 삭제

os.rmdir()를 사용하여 디렉토리를 삭제할 수 있습니다. 이 함수는 비어 있는 디렉토리만 삭제할 수 있으며, 비어 있지 않은 디렉토리를 삭제하려면 추가 처리가 필요합니다.

if os.path.exists(new_dir):
    os.rmdir(new_dir)
    print(f"디렉토리가 삭제되었습니다: {new_dir}")
else:
    print(f"삭제할 디렉토리가 존재하지 않습니다: {new_dir}")

3. 파일 작업

3.1 파일 생성

Python의 기본 파일 처리 방식을 사용하여 파일을 생성할 수 있습니다. os 모듈은 파일을 직접 생성하지 않지만, 기본 파일 작업을 보완할 수 있습니다.

with open('example.txt', 'w') as file:
    file.write("Hello, world!")
print("파일이 생성되었습니다: example.txt")

3.2 파일 삭제

os.remove() 함수를 사용하여 파일을 삭제할 수 있습니다.

if os.path.exists('example.txt'):
    os.remove('example.txt')
    print("파일이 삭제되었습니다: example.txt")
else:
    print("삭제할 파일이 존재하지 않습니다.")

3.3 파일 이름 변경 및 이동

os.rename() 함수를 사용하여 파일의 이름을 변경하거나 파일을 다른 디렉토리로 이동할 수 있습니다.

# 파일 이름 변경
os.rename('old_file.txt', 'new_file.txt')
print("파일 이름이 변경되었습니다.")

# 파일 이동
os.rename('new_file.txt', 'new_folder/new_file.txt')
print("파일이 이동되었습니다.")

4. 파일 및 폴더 존재 여부 확인

4.1 경로 존재 여부 확인

os.path.exists()를 사용하여 파일이나 폴더가 존재하는지 확인할 수 있습니다.

if os.path.exists('example.txt'):
    print("파일이 존재합니다.")
else:
    print("파일이 존재하지 않습니다.")

4.2 파일 또는 디렉토리 구분

파일인지 디렉토리인지 확인하려면 os.path.isfile() 또는 os.path.isdir()를 사용합니다.

# 파일인지 확인
if os.path.isfile('example.txt'):
    print("example.txt는 파일입니다.")

# 디렉토리인지 확인
if os.path.isdir('new_folder'):
    print("new_folder는 디렉토리입니다.")

5. 파일 및 폴더 속성

5.1 파일 크기 확인

os.path.getsize()를 사용하여 파일의 크기를 바이트 단위로 확인할 수 있습니다.

file_size = os.path.getsize('example.txt')
print(f"파일 크기: {file_size} 바이트")

5.2 파일의 마지막 수정 시간 확인

os.path.getmtime()을 사용하여 파일의 마지막 수정 시간을 확인할 수 있습니다.

import time

mod_time = os.path.getmtime('example.txt')
print(f"마지막 수정 시간: {time.ctime(mod_time)}")