Data/Python

[Python] 파이썬 입출력 - 파일 읽고 쓰기

재은초 2023. 6. 17. 21:34
반응형

파일 생성하기

  • open 함수를 이용해서 프로그램을 실행한 디렉터리에 새로운 파일을 생성한다.
# 파일 생성 기본형
파일 객체 = open(파일 이름, 파일 열기 모드)
  1. r (읽기모드): 파일을 읽기만 할 때만 사용
  2. w (쓰기모드): 파일에 내용을 쓸 때만 사용. 해당 파일이 이미 존재하는데 파일을 쓰기 모드로 열면 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성
  3. a (추가모드): 파일의 마지막에 새로운 내용을 추가시킬 때만 사용 
f = open("새파일.txt", 'w')             # 파일이름, 파일열기모드를 입력값으로
f.close()                             # 결과값으로 파일 객체를 돌려줌

# 특정 주소에 파일 생성 하고 싶을 때,
f = open("C:/doit/새파일.txt", 'w')     # 쓰기모드로 연 파일 닫지 않으면 오류 발생
f.close()                             # 그래서 보통 close()로 파일 닫아줌
  • 보통 파일 경로 표시할 때 슬래시 / 를 사용하는데 만약 역슬래시 \ 사용하려면, 역슬래시를 2번 입력하거나 r(문자열, raw string) 표시를 해줘야 한다.
add = "C:/note/새파일.txt"
add1 = "C:\\note\\새파일.txt"      # 역슬래시 2개는 슬래시 1개와 같다
add2 = r"C:\note\새파일.txt"       # \n과 같은 이스케이프 문자가 있을 경우를 대비해
                                 # 앞에 r 문자열 표시해 줌


파일을 쓰기 모드로 열어 출력값 적기

  • 모니터 화면에 출력
for i in range(1, 11):                
   data = "%d번째 줄입니다.\n" % i
   print(data)
  • 모니터 화면 대신 파일에 출력
f = open("C:/doit/새파일.txt", 'w')     
for i in range(1, 11):
   data = "%d번째 줄입니다.\n" % i
   f.write(data)                      # print 대신 write 함수 이용
f.close()



프로그램의 외부에 저장된 파이썬 파일을 읽는 함수들

① read() 함수 이용: 파일의 내용 전체를 문자열로 리턴

f = open("C:/doit/새파일.txt", 'r')
data = f.read()                      # data는 파일의 전체 내용
print(data)
f.close()

② realine() 함수 이용: 한줄씩 읽어옴

f = open("C:/doit/새파일.txt", 'r')       # 파일 읽기 모드로 염
line = f.readline()                     # 한줄씩 읽어옴
print(line)
f.close()
# 모든 라인을 출력하고 싶을 때
f = open("C:/doit/새파일.txt", 'r')
while True:                             # while True 무한 루프 
    line = f.readline()                 # 파일을 계속 한 줄씩 읽음
    if not line:                        # 만약 더 읽을 라인이 없으면 멈춤
       break
    print(line)                         # 더 이상 읽을 라인 없으면 None
f.close()

③ readlines() 함수 이용: 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 반환

f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()                    # 파일의 모든 라인을 리스트로 리턴
for line in lines:
    print(line)
f.close()

 

파일에 새로운 내용 추가

  • 쓰기 모드('w')로 파일을 열 때 이미 존재하는 파일을 열 경우 그 파일의 내용이 모두 사라짐. 하지만 원래 있던 값을 유지하면서 새로운 값만 추가하고 싶을 경우, 파일을 추가 모드('a')로 염.
f = open("C:/doit/새파일.txt",'a')     # 파일을 추가 모드('a')로 열고
for i in range(11, 20):
    data = "%d번째 줄입니다.\n" % i
    f.write(data)                     # write를 이용해 결과값을 기존 파일에 추가
f.close()

 

With문과 함께 사용하기

  • with문은 파일을 열고 닫는 것을 자동으로 처리
  • 파일이 with 블록을 벗어나는 순간, 열린 파일 객체가 자동으로 닫힘
# 기존 방식
f = open("foo.txt", 'w')
f.write("Life is too short, you need python")
f.close()

# with문 사용
with open("foo.txt", "w") as f:                    # with 블록을 벗어나면
    f.write("Life is too short, you need python")  # 열린 파일 자동으로 닫힘

 

Reference

반응형