일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Spring boot
- android
- kotlin
- 웹 크롤링
- Java
- GIT
- 자바네트워크
- chatGPT's answer
- 리눅스
- 자바암호
- python
- 고전역학
- NIO
- JVM
- Database
- 유닉스
- 인프라
- GPT-4's answer
- 소프트웨어공학
- 역학
- lombok
- 자바
- oracle
- 시스템
- 코틀린
- write by GPT-4
- write by chatGPT
- 뉴턴역학
- flet
- 파이썬
- Today
- Total
Akashic Records
파일 읽고 쓰기(pathlib) 본문
기본적인 파일 읽기 및 쓰기
파이썬에서 파일을 읽는 read()
메서드와 read_text()
메서드는 유사한 기능을 수행하지만 사용 방법과 관련된 몇 가지 주요 차이점이 있습니다.
read()
메서드:read()
메서드는 Python의 내장 함수open()
을 사용하여 얻은 파일 객체에서 호출됩니다. 이 메서드는 파일의 내용을 문자열로 읽어들입니다.- 파일을 열 때
open()
함수를 사용해야 하며, 이 과정에서 파일 모드(읽기, 쓰기 등), 인코딩 등을 직접 지정할 수 있습니다. - 사용 예:
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
read_text()
메서드:read_text()
메서드는pathlib
모듈의Path
객체에서 사용할 수 있습니다. 이 모듈은 파일 시스템 경로를 객체 지향적으로 쉽게 다룰 수 있게 해 주며, 파일을 열고 읽는 작업을 한 번에 할 수 있습니다.Path
객체를 사용하면open()
함수를 직접 호출하지 않고도 파일의 내용을 쉽게 읽을 수 있으며, 인코딩을 지정할 수도 있습니다.- 사용 예:
from pathlib import Path
path = Path('example.txt')
content = path.read_text(encoding='utf-8')
print(content)
요약:
read()
는 전통적인 파일 핸들링 방식으로 사용되며 파일 객체를 직접 관리해야 합니다. 반면, read_text()
는 pathlib
모듈을 사용하여 좀 더 현대적이고 간결한 코드로 파일의 내용을 읽을 수 있게 해 줍니다. 두 메서드 모두 비슷한 결과를 반환하지만, pathlib
을 사용하는 것이 특히 파일 경로와 관련된 작업을 할 때 더 편리할 수 있습니다.
디렉토리와 파일 조작
pathlib
모듈은 파일 시스템 경로를 객체 지향적으로 다루기 위한 유용한 라이브러리입니다. 이 모듈을 사용하면 파일과 디렉토리에 대한 경로를 쉽게 조작하고, 파일을 읽고 쓰는 작업을 간단히 처리할 수 있습니다. 다음은 pathlib
의 몇 가지 기본적인 사용 예제입니다.
디렉토리 내의 파일 목록 가져오기:
from pathlib import Path
# 디렉토리 경로 설정
dir_path = Path('some_directory')
# 디렉토리 내 모든 파일 및 폴더 목록 출력
for item in dir_path.iterdir():
print(item)
특정 패턴과 일치하는 파일 찾기:
from pathlib import Path
# 디렉토리 경로 설정
dir_path = Path('some_directory')
# 특정 패턴을 가진 파일 찾기 (예: 모든 텍스트 파일)
for file in dir_path.glob('*.txt'):
print(file)
파일 및 디렉토리 존재 여부 확인:
from pathlib import Path
# 디렉토리 경로 설정
dir_path = Path('some_directory')
# 특정 패턴을 가진 파일 찾기 (예: 모든 텍스트 파일)
for file in dir_path.glob('*.txt'):
print(file)
pathlib
모듈은 이와 같이 파일과 디렉토리를 쉽게 다룰 수 있는 다양한 메서드를 제공합니다. 이를 통해 파일 시스템 관련 작업을 보다 직관적이고 효율적으로 수행할 수 있습니다.
Path Class 사용 예시
pathlib
의 Path
객체를 사용하여 파일 시스템의 경로를 객체 지향적으로 처리하는 몇 가지 예제 코드를 소개하겠습니다. 이 예제들은 파일과 디렉토리를 생성, 수정, 검사 및 조작하는 방법을 보여줍니다.
1. 파일과 디렉토리 생성하기
from pathlib import Path
# 새 디렉토리 생성
dir_path = Path('new_directory')
dir_path.mkdir(exist_ok=True) # exist_ok=True는 디렉토리가 이미 존재할 경우 오류를 방지합니다.
# 새 파일 생성
file_path = dir_path / 'new_file.txt' # 디렉토리 경로와 파일명을 조합
file_path.touch(exist_ok=True) # 파일이 이미 존재하면 오류를 방지합니다.
2. 파일에 쓰기 및 읽기
# 파일에 텍스트 쓰기
file_path.write_text('Hello, World!', encoding='utf-8')
# 파일 읽기
content = file_path.read_text(encoding='utf-8')
print(content)
3. 파일 및 디렉토리 정보 가져오기
# 파일 크기 가져오기
print(f"File size: {file_path.stat().st_size} bytes")
# 파일의 절대 경로 출력
print(f"Absolute path: {file_path.resolve()}")
4. 파일과 디렉토리 삭제하기
# 파일 삭제
file_path.unlink(missing_ok=True) # missing_ok=True는 파일이 존재하지 않을 경우 오류를 방지합니다.
# 디렉토리 삭제
dir_path.rmdir() # 디렉토리가 비어 있어야 삭제가 가능합니다.
5. 파일 경로 조작 및 정보 확인
from pathlib import Path
# 경로 설정
path = Path('/users/example/docs/report.txt')
# 부모 디렉토리 출력
print(f"Parent: {path.parent}")
# 파일 확장자 출력
print(f"Suffix: {path.suffix}")
# 파일명만 출력 (확장자 포함)
print(f"Name: {path.name}")
# 파일명만 출력 (확장자 제외)
print(f"Stem: {path.stem}")
Path
객체의 메서드를 이용하면 파일 시스템에 대한 다양한 작업을 간편하게 처리할 수 있습니다. 각 메서드는 특정 작업을 수행하도록 설계되어 있으며, 이를 조합하여 복잡한 파일 시스템 작업을 쉽게 구현할 수 있습니다.
파일쓰기
파이썬에서 파일을 저장하는 방법에는 여러 가지가 있습니다. 여기에서는 open()
함수를 사용한 기본적인 방법과 pathlib
모듈을 이용한 현대적인 방법을 소개하겠습니다. 두 가지 예제 모두 텍스트 파일을 생성하고 내용을 저장하는 방법을 보여줍니다.
1. open()
함수를 사용한 파일 쓰기
이 방법은 전통적인 파일 핸들링 방식입니다. 파일을 쓰기 모드로 열고, 원하는 내용을 파일에 씁니다.
# 파일명 지정
filename = 'example.txt'
# 파일 쓰기 모드로 열기
with open(filename, 'w', encoding='utf-8') as file:
# 파일에 내용 쓰기
file.write("Hello, Python!\n")
file.write("파일 저장 예제입니다.\n")
# 파일이 자동으로 닫힙니다 (with 블록을 사용했기 때문에)
print(f"{filename}에 내용을 저장했습니다.")
2. pathlib
모듈을 사용한 파일 쓰기
pathlib
모듈을 사용하면 경로를 객체로 취급하고 메서드를 통해 파일에 쉽게 쓸 수 있습니다. 이 방법은 보다 현대적인 접근 방식이며 코드가 간결해집니다.
from pathlib import Path
# 파일 경로 설정
file_path = Path('example.txt')
# 파일에 텍스트 쓰기
file_path.write_text("Hello, pathlib!\n파일 저장 예제입니다.", encoding='utf-8')
# 저장 완료 메시지
print(f"{file_path}에 내용을 저장했습니다.")
두 예제 모두 파일을 새로 생성하거나 기존 파일에 덮어씌워 내용을 저장합니다. write()
메서드와 write_text()
메서드는 파일이 없으면 새로 생성하고, 파일이 이미 존재한다면 내용을 덮어씁니다. 추가적으로 내용을 더하고 싶다면, 파일을 열 때 'append' 모드 ('a')를 사용하면 됩니다.
여러 줄을 파일에 저장하기(pathlib)
from pathlib import Path
# 파일 경로 설정
file_path = Path('example.txt')
# 여러 줄의 텍스트를 리스트로 준비
lines = [
"첫 번째 줄입니다.",
"두 번째 줄입니다.",
"세 번째 줄입니다."
]
# 리스트의 각 문자열을 하나의 문자열로 결합
content = "\n".join(lines)
# 파일에 텍스트 쓰기
file_path.write_text(content, encoding='utf-8')
# 저장 완료 메시지
print(f"{file_path}에 여러 줄의 내용을 저장했습니다.")
이 코드는 세 줄의 텍스트를 lines
리스트에 저장하고, "\n".join(lines)
를 사용하여 이 리스트를 개행 문자로 구분된 하나의 문자열로 변환합니다. 그 후, write_text()
메서드로 이 문자열을 파일에 저장합니다. write_text()
메서드는 파일이 이미 존재하면 기존 내용을 덮어씌우고, 파일이 없다면 새로 생성합니다.
이진파일 쓰기(pathlib)
이 방식은 텍스트 데이터를 효율적으로 파일에 저장하는 간단하고 깔끔한 방법을 제공합니다.
pathlib
모듈을 사용하여 이진 파일을 읽고 쓰는 작업은 read_bytes()
와 write_bytes()
메서드를 사용하여 수행할 수 있습니다. 이진 파일은 텍스트가 아닌 데이터(예: 이미지, 비디오, 실행 파일 등)를 포함하며, 이를 처리할 때는 텍스트와 달리 인코딩 없이 바이트 단위로 직접 다룹니다.
이진 파일 쓰기
이 예제에서는 바이트 데이터를 이진 파일에 쓰는 방법을 보여줍니다. 예를 들어, 간단한 바이트 배열을 파일에 저장해보겠습니다.
from pathlib import Path
# 파일 경로 설정
file_path = Path('example.bin')
# 이진 데이터
binary_data = bytes([0x00, 0x01, 0x02, 0x03, 0x04])
# 파일에 이진 데이터 쓰기
file_path.write_bytes(binary_data)
# 저장 완료 메시지
print(f"{file_path}에 이진 데이터를 저장했습니다.")
이진 파일 읽기
저장된 이진 파일을 다시 읽는 방법을 보여줍니다.
from pathlib import Path
# 파일 경로 설정
file_path = Path('example.bin')
# 파일에서 이진 데이터 읽기
binary_data_read = file_path.read_bytes()
# 읽은 데이터 출력
print(f"읽은 이진 데이터: {list(binary_data_read)}")
위의 예제 코드는 먼저 간단한 바이트 배열을 example.bin
파일에 저장하고, 다시 그 파일을 읽어서 저장된 이진 데이터를 콘솔에 출력합니다. write_bytes()
와 read_bytes()
메서드는 이진 파일 처리를 간단하게 만들어 주며, 텍스트 파일과는 다르게 인코딩을 지정할 필요가 없습니다.
파일 복사하고 옮기기
파이썬에서 파일을 복사하거나 이동하는 작업은 shutil 모듈을 사용하여 간단히 처리할 수 있습니다. shutil 모듈은 파일 및 디렉토리를 복사, 이동, 삭제 등의 고수준 연산을 제공합니다. 여기서는 파일을 복사하고 이동하는 예제를 제공하겠습니다.
파일 복사하기
파일을 복사하는 경우, shutil.copy() 또는 shutil.copy2() 함수를 사용할 수 있습니다. 이 두 함수의 차이는 copy2()가 메타데이터(예: 수정 시간)도 함께 복사한다는 점입니다.
import shutil
from pathlib import Path
# 원본 파일 경로
source_path = Path('original.txt')
# 복사할 파일 경로
destination_path = Path('copy.txt')
# 파일 복사
shutil.copy(source_path, destination_path)
print(f"{source_path}을 {destination_path}로 복사했습니다.")
파일 이동하기
파일을 다른 위치로 이동하거나 이름을 변경할 때는 shutil.move() 함수를 사용합니다. 이 함수는 파일을 목적지로 이동시키며 필요한 경우 이름을 변경할 수 있습니다.
import shutil
from pathlib import Path
# 원본 파일 경로
source_path = Path('original.txt')
# 이동할 파일 경로 (또는 새 파일명)
destination_path = Path('moved.txt')
# 파일 이동
shutil.move(source_path, destination_path)
print(f"{source_path}을 {destination_path}로 이동했습니다.")
이 예제들은 파일을 복사하고 이동하는 기본적인 방법을 보여줍니다. shutil 모듈을 사용하면 복잡한 파일 시스템 작업도 몇 줄의 코드로 간단하게 수행할 수 있습니다. 파일의 복사와 이동 작업 시에는 경로가 올바른지, 필요한 권한이 있는지 등을 미리 확인해야 합니다.
'Python for Beginners' 카테고리의 다른 글
[파이썬 크래시 코스 예제] 외계인 침공 -1 (0) | 2024.06.04 |
---|---|
Code Test(Unit Test) with pytest (0) | 2024.06.03 |
PEP(Python Enhancement Proposal) 8 (0) | 2024.05.28 |
[추가자료] 2.2 변수와 자료형 딕셔너리(Dictionary) 함수들 (1) | 2024.05.24 |
[추가자료] 2.2 변수와 자료형 리스트(list) 슬라이싱 (0) | 2024.05.24 |