[Python] 파이썬 파일 읽기,수정,삭제
- -
오늘은 파이썬에서 파일을 읽기, 수정, 삭제, 그리고 파일이 존재하는지 여부를 확인하는 방법에 대해 알아보는 시간을 가져보자.
1. 파일 열기와 닫기
파이썬에서 파일을 열고 닫는 것은 파일을 읽거나 쓸 때 매우 중요한 작업이다. 파일을 열 때 사용하는 함수는 open()이며, 파일을 닫을 때 사용하는 메서드는 close()이다. 아래의 간단한 예제를 살펴보자.
1.1 파일 열기
예제 코드 1
file = open("파일경로/파일이름", "모드")
open() 함수를 사용하여 파일을 열 때 다음과 같은 구문을 사용한다. 첫 번째 매개변수에는 파일의 경로를 지정해 주고 두 번째 매개변수에는 모드인데 파일을 어떻게 열지를 지정하는 문자열이다. 모드의 종류는 다음과 같다.
모드 | 모드 내용 |
r | 읽기 모드(파일을 읽기 위해 열림) |
w | 쓰기 모드(파일을 쓰기 위해 열림, 이미 있는 파일은 덮어씀) |
a | 추가 모드(파일의 끝에 내용을 추가하기 위해 열림) |
x | 생성 모드(파일을 생성하고 열기, 파일이 이미 존재하면 오류 발생) |
b | 이진 모드(바이너리 파일을 다룰 때 사용) |
파일을 읽기 모드로 열려면 다음과 같이 사용할 수 있다. 위의 모드에 관한 사용법은 파일 읽기 과정에서 자세히 살펴보도록 하자.
예제 코드 2
file = open("example.txt", "r")
1.2 파일 닫기
파일을 사용한 후에는 반드시 파일을 닫아야 한다. 파일을 닫지 않으면 파일 자원이 계속 사용 중이므로 리소스 누수가 발생할 수 있다. 파일을 닫을 때 close() 메서드를 사용한다.
예제 코드
file.close()
파일을 열고 사용한 후에는 항상 파일을 닫아야 한다. 이렇게 파일을 닫으면 파일에 대한 연결이 종료되며 해당 파일에 대한 작업을 마칠 수 있다.
1.3 파일 열고 닫는 예제
# 파일 열기
file = open("example.txt", "r")
# 파일 내용 읽기
content = file.read()
print(content)
# 파일 닫기
file.close()
위의 예제는 파일을 열어서 내용을 읽고 나서 파일을 안전하게 닫을 수 있다. 파일을 열고 닫는 것은 파일을 다룰 때 매우 중요하므로 신경을 써야 한다. 또한 with 문을 사용하여 파일을 열면, 파일을 사용한 후 자동으로 닫히도록 할 수 있다.
2. 파일 읽기
파이썬에서 파일 읽기는 파일의 내용을 읽어와 프로그램에서 사용하는 중요한 작업이다. 파일을 읽기 위해 open() 함수와 파일 객체의 다양한 메서드를 사용한다.
2.1 텍스트 파일 읽기 모드 ("r")
예제 코드
with open("example.txt", "r") as file:
content = file.read()
print(content)
텍스트 파일을 읽는 데 사용된다. 파일을 읽을 때 텍스트 모드로 열면 파일의 내용을 문자열로 반환한다.
2.2 바이너리 파일 읽기 모드 ("rb")
예제 코드
with open("image.jpg", "rb") as file:
binary_data = file.read()
# 이진 데이터로 작업할 수 있음
이진 파일을 읽는 데 사용된다. 바이너리 모드로 파일을 열면 파일의 내용을 바이너리 데이터로 반환한다. 주로 이미지, 동영상, 음악 파일 등을 읽을 때 사용된다.
2.3 텍스트 파일 한 줄씩 읽기 모드 ("r")
예제 코드
with open("example.txt", "r") as file:
line1 = file.readline()
line2 = file.readline()
print(line1)
print(line2)
readline() 메서드를 사용하여 파일에서 한 줄씩 읽을 수 있다. 이 모드는 텍스트 파일의 각 줄을 문자열로 반환한다.
2.4 텍스트 파일 모든 줄 읽기 모드 ("r")
예제 코드
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line)
readlines() 메서드를 사용하여 파일의 모든 줄을 읽고 각 줄을 리스트의 요소로 반환한다.
2.5 바이너리 파일 한 바이트씩 읽기 모드 ("rb")
예제 코드
with open("image.jpg", "rb") as file:
byte1 = file.read(1)
byte2 = file.read(1)
# 바이트 데이터로 작업할 수 있음
바이너리 파일을 열고 read(1) 메서드를 사용하여 한 바이트씩 읽을 수 있다. read() 메서드에 들어가는 파라미터는 몇 바이트만큼의 데이터를 읽을지를 설정해 주는 역할이다. 위의 예제에서는 1이므로 1 바이트씩 읽는다고 보면 된다.
2.6 바이너리 파일 여러 바이트 읽기 모드 ("rb")
예제 코드
with open("image.jpg", "rb") as file:
binary_data = file.read(1024) # 1024 바이트 읽기
# 바이트 데이터로 작업할 수 있음
read(size) 메서드를 사용하여 원하는 바이트 수만큼 읽어올 수 있다.
3. 파일 추가
파이썬에서 파일을 추가하는 방법은 파일을 열고 쓰는 모드를 "추가 모드"로 설정하여 새로운 내용을 파일 끝에 추가하는 것이다. 파일 추가를 하기 위한 다음 단계를 살펴보자.
예제 코드 1
# 텍스트 파일 추가 모드로 열기
with open('파일명.txt', 'a') as file:
# 추가 작업 수행
예제 코드 2
# 이진 파일 추가 모드로 열기
with open('파일명.bin', 'ab') as file:
# 추가 작업 수행
open() 함수를 사용하여 파일을 열어야 한다. 파일을 열 때 mode 매개변수를 "a" 또는 "ab"로 설정하여 추가 모드로 열 수 있다. "a"는 텍스트 모드로, "ab"는 이진 모드로 파일을 연다.
예제 코드 3
with open('파일명.txt', 'a') as file:
file.write('추가할 내용\n')
파일에 추가하기 모드로 열었다면, 파일의 끝에 내용을 추가할 수 있다. 파일에 추가할 내용을 write() 메서드를 사용하여 쓸 수 있다.
파일 추가 모드를 사용하면 기존 파일 내용을 덮어쓰지 않고 파일의 끝에 새로운 내용을 추가할 수 있다. 이것은 로그 파일, 텍스트 파일, 이진 파일 등을 업데이트할 때 유용하다.
4. 파일 삭제
Python에서 파일을 삭제하는 방법은 os 모듈을 사용하여 파일 시스템에서 파일을 삭제하는 것이다. 아래에서 파일을 삭제하는 과정을 자세히 살펴보자.
예제 코드
import os
file_path = "myfile.txt"
os.remove(file_path)
파일을 삭제하기 위해 먼저 os 모듈을 임포트 해야 한다. os 모듈의 remove() 함수를 사용하여 삭제하고자 하는 파일의 경로를 매개변수로 전달한다. 해당 코드를 실행하면 myfile.txt 파일이 삭제된다.
5. 파일 경로 확인
파이썬에서 os.path 모듈을 사용하여 파일의 상대 경로와 절대 경로를 알아낼 수 있다. 하지만 먼저 상대 경로와 절대 경로가 무엇인지 한 번 살펴보자.
상대 경로와 절대 경로는 파일 또는 디렉터리의 위치를 나타내는 방식이다. 이들은 파일 시스템에서 특정 파일 또는 디렉터리를 찾는 데 사용된다.
경로 | 상대 경로(Relative Path) | 절대 경로(Absolute Path) |
내용 | 상대 경로는 현재 작업 디렉토리(실행 중인 스크립트 또는 프로그램이 위치한 디렉토리)를 기준으로 파일 또는 디렉토리의 위치를 나타낸다. 주로 "."(현재 디렉토리) 및 ".."(상위 디렉토리)와 함께 사용된다. | 절대 경로는 파일 또는 디렉토리의 위치를 루트 디렉토리(일반적으로 "/" 또는 "C:")를 기준으로 나타낸다. 절대 경로는 항상 동일한 위치를 가리키며, 현재 작업 디렉토리에 의존하지 않는다. |
예시 | "./subfolder/file.txt" | "/home/user/documents/file.txt" |
5.1 상대 경로 알아내기
os.path.relpath(path, start) 함수를 사용하여 상대 경로를 얻을 수 있다. 이 함수는 path 경로가 start 경로를 기준으로 어떤 상대적인 경로인지 계산한다.
예제 코드
import os
path = "/path/to/somefile.txt"
start = "/path/to"
relative_path = os.path.relpath(path, start)
print("상대 경로:", relative_path)
상대 경로: somefile.txt
위의 예제에서 /path/to/somefile.txt 경로가 /path/to를 기준으로 상대 경로로 어떻게 표현되는지를 확인한다.
5.2 절대 경로 알아내기
os.path.abspath(path) 함수를 사용하여 절대 경로를 얻을 수 있다. 이 함수는 주어진 상대 경로나 부분적인 경로를 절대 경로로 변환한다.
예제 코드
import os
relative_path = "../somedir/myfile.txt"
absolute_path = os.path.abspath(relative_path)
print("절대 경로:", absolute_path)
절대 경로: /전체/경로/에서/시작하는/상대경로/../../somedir/myfile.txt
위의 예제에서../somedir/myfile.txt 상대 경로를 절대 경로로 변환한 결과를 출력한다.
상대 경로와 절대 경로를 알아내려면 os.path.relpath()와 os.path.abspath() 함수를 적절히 사용하여 경로를 처리하면 된다. 이렇게 얻은 경로 정보를 활용하여 파일 및 디렉터리의 위치를 정확하게 파악할 수 있다.
6. 파일 존재 여부 확인
파일의 존재 여부를 확인하는 방법은 다양하다. 가장 일반적인 방법 중 하나는 os.path 모듈을 사용하는 것이다. 다음은 파일 존재 여부를 확인하는 예제 코드이다.
예제 코드
import os
file_path = "파일의 경로 또는 파일명"
if os.path.exists(file_path):
print(f"{file_path} 파일이 존재합니다.")
else:
print(f"{file_path} 파일이 존재하지 않습니다.")
os.path.exists() 함수를 사용하여 지정한 파일 경로가 실제로 존재하는지 확인한다. 파일이 존재하면 메시지가 출력되고, 그렇지 않으면 다른 메시지가 출력된다.
또는 Path 객체를 사용하여 파일 존재 여부를 확인할 수 있다. 이 방법은 Python 3.4 이상에서 사용할 수 있다.
예제 코드
from pathlib import Path
file_path = "파일의 경로 또는 파일명"
path = Path(file_path)
if path.is_file():
print(f"{file_path} 파일이 존재합니다.")
else:
print(f"{file_path} 파일이 존재하지 않습니다.")
Path 객체의 is_file() 메서드를 사용하여 파일이 존재하는지 확인할 수 있다.
읽어주셔서 감사합니다.
'Programming Language > Python' 카테고리의 다른 글
[Python] 파이썬 딕셔너리 (2) | 2023.10.17 |
---|---|
[Python] 파이썬 pynput 라이브러리 (0) | 2023.10.16 |
[Python] 파이썬 전역변수, 지역변수 (0) | 2023.10.11 |
[Python] 파이썬 프로그램 시간 측정 (0) | 2023.10.04 |
[Python] 파이썬 all, any 함수 사용법 (0) | 2023.10.03 |
소중한 공감 감사합니다