6.1 파일 작업하기
Python은 파일과 디렉토리 작업을 위한 다양한 내장 함수와 모듈을 제공해. 주요 작업은 os, shutil 같은 내장 모듈을 사용해서 수행돼.
파일 작업의 세 가지 주요 작업:
- 복사
- 이동
- 삭제
이 작업들에 shutil 모듈이 딱이야.
파일 복사하기
import shutil
shutil.copy('source.txt', 'destination.txt')
파일 이동하기
import shutil
shutil.move('source.txt', 'destination.txt')
파일 삭제하기
import os
os.remove('example.txt')
그 어느 때보다 쉬워.
6.2 파일 존재 여부 확인하기
특정 파일이 존재하는지 확인해야 할 때가 많아. os 모듈에는 이를 위해 exists()라는 특별한 메소드가 있어.
파일 존재 여부 확인하기
import os
if os.path.exists('example.txt'):
print("File exists")
else:
print("File does not exist")
# 파일이 존재하지 않으면, 프로그램은 else 블록에 있는 작업을 수행할 거야.
# 예를 들어 경고 메시지를 출력하거나, 새 파일을 생성하거나, 프로그램을 종료할 수 있어.
파일이 존재하지 않으면, 프로그램은 조건문으로 이를 처리하거나 예외를 발생시킬 수 있어.
6.3 객체 유형 확인하기: 파일 또는 디렉토리
객체가 파일인지 디렉토리인지 확인해야 할 때가 많아. 예를 들어, 디렉토리의 모든 내용을 읽어서 파일은 하나씩 처리하고 디렉토리는 별도로 처리해야 할 때.
이런 경우에 사용할 수 있는 두 가지 특별한 메소드가 있어 — isdir()은 객체가 디렉토리인지 확인하고 isfile()은 객체가 파일인지 확인해.
디렉토리인지 확인하기
if os.path.isdir('example_directory'):
print("이건 디렉토리야")
else:
print("이건 디렉토리가 아니야")
파일인지 확인하기
if os.path.isfile('example_file'):
print("이건 파일이야")
else:
print("이건 파일이 아니야")
이건 아주 유용한 함수들이야, 생각보다 더 자주 사용하게 될걸. :)
6.4 경로 작업하기
os 모듈에는 os.path라는 자식 모듈이 있어, 파일과 디렉토리 작업에 유용한 기능들이 포함되어 있어. 여기 몇 가지를 살펴보자:
파일 확장자 얻기
splitext() 함수는 파일 이름을 두 부분으로 나누고 이름과 확장자로 이루어진 목록을 반환해.
import os.path
# 파일 확장자 얻기
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"파일 확장자: {file_extension}")
확장자를 뺀 파일 이름 얻기
import os.path
# 확장자를 뺀 파일 이름 얻기
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"확장자를 뺀 파일 이름: {file_name}")
경로에서 파일 이름 얻기
basename() 함수는 파일의 경로를 잘라내고 오직 파일 이름만 반환해.
import os.path
# 경로에서 파일 이름 얻기
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"파일 이름: {file_name}")
경로에서 디렉토리 얻기
dirname() 함수를 사용하여 파일 이름에서 디렉토리만 얻는 것도 쉬워.
import os.path
# 경로에서 디렉토리 얻기
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"디렉토리: {directory}")
경로 결합하기
디렉토리와 파일 이름이 따로 있다면, 이를 결합하여 그 파일에 대한 전체 경로를 얻을 수 있어.
import os.path
# 경로 결합하기
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"전체 경로: {full_path}")
6.5 플랫폼 독립적인 경로
경로를 다룰 때는 운영 체제 간의 차이를 고려하는 것이 중요해. 경로 구분자는 다를 수 있고, 한 플랫폼에서 작동하는 코드가 다른 플랫폼에서 작동하지 않을 수 있어. 서로 다른 운영 체제 간의 코드 이식 문제를 피하기 위해 os.path.join(), os.path.abspath(), os.path.dirname() 같은 함수를 사용해, 이러한 함수들은 여러 플랫폼과의 호환성을 보장해.
예를 들어:
import os
# 플랫폼 독립적으로 경로 결합하기
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"전체 경로: {full_path}")
절대 경로 얻기
현재 작업 디렉토리를 기준으로 한 경로만 있다면, 이를 절대 경로로 변환하고 싶을 때가 있어. abspath() 함수가 그런 경우에 사용돼.
import os.path
# 절대 경로 얻기
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"절대 경로: {absolute_path}")
경로 작업을 할 때 항상 시스템 함수를 사용해, 왜냐하면 너의 코드는 다른 운영 체제에서 실행될 수도 있어서, 그 때 파일 구분자가 \가 아니라 /일 수도 있고, 경로에 ":"가 금지되어 있을 수도 있으니까.
GO TO FULL VERSION