[ python 친해지기 #12 ] 파이썬 파일 입출력
안녕하세요. 심심한 코딩쟁이입니다.
오늘은 파이썬의 파일 입출력에 대해서 알아보겠습니다.
파일을 열거나 생성하고 내용을 삽입하거나 수정하여 저장하는 방법들을 살펴볼 테니
천천히 따라와 주세요.
파일 생성
현재 작업 중인 디렉터리에 파일을 생각하는 방법은 간단합니다.
# 파일 생성하기
f = open("생성할 파일명", 'w')
f.close()
파일을 열 때 사용가능한 3가지 옵션에 대한 설명입니다.
w | 쓰기모드 |
a | 추가모드 |
r | 읽기모드 |
쓰기모드로 파일을 열 때 이미 존재하는 파일을 연다면 내용이 모두 사라지고 처음부터 입력됩니다.
파일이 존재하지 않을 경우 현재 작업 디렉터리에 지정한 파일명으로 된 파일이 새롭게 생성됩니다.
이어서 작성하고 싶다면 추가모드 옵션을 사용합니다.
파일을 열때 절대경로와 상대경로 모두 가능
파일 경로에 \ (백슬래시)를 사용할 경우 이스케이프 문자 사용 ex) D:\\symxsym\\test.txt
파일 내용 입력
파일을 쓰기모드로 열고 내용을 입력해 봅시다.
# 파일에 내용을 입력해 봅시다.
f = open('D:\\symxsym\\hello.py', 'w') # 쓰기모드로 파일 오픈(파일 생성됨)
f.write('print(\"hello\")\n') # 큰따옴표를 사용하기위해 이스케이프 문자 사용
f.close() # 파일 객체 닫기
위 코드를 실행한 후 해당 경로에 들어가 보면 hello.py라는 파이썬 파일이 생성되어 있고
실행해 보면 hello가 제대로 출력됩니다.
파일 내용 추가
파일을 추가모드로 열고 내용을 추가해 봅시다.
# 추가모드를 사용해 내용 이어쓰기
f = open('D:\\symxsym\\hello.py', 'a') # 추가모드로 파일 오픈
for i in range(10):
f.write(f'print(\"{i}\")') # 0에서 9까지를 출력하는 코드를 추가
f.close()
################# hello.py #################
print("hello")
print("0")
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
우리가 의도한 대로 hello.py 파일에 파이썬 코드가 추가된 것을 확인할 수 있습니다.
다양한 파일 읽기 방법
파일의 내용을 읽는 방법들을 살펴보겠습니다.
readline() 한 줄 읽기
# readline() 한 줄 읽기
f = open('D:\\symxsym\\hello.py', 'r') # 읽기모드로 파일 오픈
str = f.readline() # 첫 번째 줄을 str에 넣음
print(str)
# 출력 결과#### 줄 바꿈 문자 포함
print("hello")#
#
###############
str = str.strip()
print(str)
# 출력 결과####
print("hello")#
###############
f.close()
눈에는 안 보이지만 위 예제에서 변수 str에는 print("hello")\n 가 대입됩니다.
즉, 줄 바꿈 문자(\n)가 포함되어 있습니다.
이를 없애기 위해서 strip() 함수를 사용합니다.
한 줄씩 읽어서 모든 내용을 읽으려면 반복문을 사용하면 편리합니다.
# readline() 한 줄 읽기와 반복문
f = open('D:\\symxsym\\hello.py', 'r') # 읽기모드로 파일 오픈
while True: # 무한 루프
str = f.readline().strip() # 문자열 끝에 있는 줄바꿈 문자를 제거한 한 줄 읽기
if not str: break # 더이상 읽을 데이터가 없을 때 readline()은 ""(빈 문자열)을 반환
print(str)
f.close()
# 출력 결과
print("hello")
print("0")
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
readlines() 모든 줄 리스트로 반환
# readlines() 모든 줄 리스트로 반환
f = open('D:\\symxsym\\hello.py', 'r') # 읽기모드로 파일 오픈
str_list = f.readlines() # ['print("hello")', 'print("0")',....]
for line in str_list:
print(line.strip())
f.close()
# 출력 결과
print("hello")
print("0")
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
각각의 줄을 요소로 가지는 리스트를 반환해 주기 때문에 반복문을 사용해 다루기 편리합니다.
read() 전체 내용을 문자열로 반환
# read() 전체 내용 문자열로 반환
f = open('D:\\symxsym\\hello.py', 'r') # 읽기모드로 파일 오픈
str = f.read() # 전체 내용을 하나의 문자열로 읽어들인다.
print(str)
f.close()
# 출력 결과
print("hello")
print("0")
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
파일 객체와 for 문을 사용해 한 줄씩 읽기
# 파일 객체와 for 문을 사용해 한 줄씩 읽기
f = open('D:\\symxsym\\hello.py', 'r') # 읽기모드로 파일 오픈
for str in f: # 파일 객체 f를 for 문에 위치시켜서 한 줄씩 꺼내쓰는 느낌의 동작
print(str.strip())
f.close()
# 출력 결과
print("hello")
print("0")
print("1")
print("2")
print("3")
print("4")
print("5")
print("6")
print("7")
print("8")
print("9")
with문을 사용해 파일 열기
# with문을 사용하면 f.close()가 자동으로 적용된다.
with open('D:\\symxsym\\hello.py', 'r') as f: # 원하는 모드 선택 (w, r, a)
for str in f: # 파일 객체 f를 for 문에 위치시켜서 한 줄씩 꺼내쓰는 느낌의 동작
print(str.strip())
# with의 블럭을 벗어나면 파일 객체가 닫힌다. 즉, f.close()가 자동 적용되는 셈이다.
with문을 사용한 줄 끝에 콜론(:)을 빼먹지 않게 주의하세요.
오늘은 파이썬의 파일 입출력에 대해 알아보았습니다.
파일 열기, 생성, 작성, 수정을 위해 다양한 모드와 함수들을 조합해 편리하게 파일을 다룰 수 있었습니다.
파일 입출력이 어렵게 느껴지신다면 우리가 평소에 모니터에 출력하던 것을
파일에 출력한다라고 생각하시면 좀 더 친근한 느낌이 들 것 같습니다.
추운 날씨가 계속해서 이어지고 있으니 다들 감기 조심하세요.
감사합니다.
'programming > python' 카테고리의 다른 글
[ python 친해지기 #14 ] 파이썬 클래스 1탄 (0) | 2023.02.02 |
---|---|
[ python 친해지기 #13 ] 파이썬 코드 실행 시 인수 전달 방법 (0) | 2023.02.01 |
[ python 친해지기 #11 ] 파이썬 함수 사용법 (0) | 2023.01.27 |
[ python 친해지기 #10 ] 파이썬 제어문 (for 반복문) (0) | 2023.01.25 |
[ python 친해지기 #9 ] 파이썬 제어문 (while 반복문) (0) | 2023.01.24 |