[python] 파일 사용하기

anjiyoo·2024년 3월 6일

Python

목록 보기
26/41
post-thumbnail


1.파일에 문자열 쓰기


메소드설명
read()파일에서 문자열을 읽음
write('문자열')파일에 문자열을 씀
readline()파일의 내용을 한 줄 읽음
readines()파일의 내용을 한 줄씩 리스트 형태로 가져옴
writelines(문자열리스트)파일에 리스트의 문자열을 씀, 리스트의 각 문자열에서는 \n을 붙여줘야 함
pickle.load(파일객체)파일에서 파이썬 객체를 읽음
pickle.dump(객체,파일객체)파이썬 객체를 파일에 저장

파일 모드기능설명
'r'읽기 전용파일을 읽기 전용으로 열기, 단 파일이 있어야 하고 파일이 없으면 에러 발생
'w'쓰기 전용쓰기 전용으로 새 파일을 생성, 만약 파일이 있으면 내용 덮어씀
'a'추가파일을 열어 파일 끝에 값을 이어 씀, 만약 파일이 없으면 파일을 생성
'x'배타적 생성(쓰기)파일을 쓰기 모드로 생성, 파일이 이미 있으면 에러 발생
'r+'읽기/쓰기파일을 읽기/쓰기용으로 열기, 파일이 있어야 하고 파일이 없으면 에러 발생
'w+'읽기/쓰기파일을 읽기/쓰기용으로 열기, 파일이 없으면 파일을 생성하고 파일이 있으면 내용을 덮어씀
'a+'추가(읽기/쓰기)파일을 열어 파일 끝에 값을 이어 씀, 파일이 없으면 파일을 생성
'x+'배타적 생성(읽기/쓰기)파일을 읽기/쓰기 모드로 생성, 파일이 이미 있으면 에러 발생
t텍스트 모드파일을 읽거나 쓸 때 \n과 \r\n을 서로 변환
b바이너리 모드파일의 내용을 그대로 읽고 값을 그대로 씀

파일객체 = open(파일이름, 파일모드)  # 파일 열기
파일객체.close()  # 파일 객체 닫기

with open(파일이름, 파일모드) as 파일객체:  # 파일을 사용한 뒤 자동으로 파일 객체를 닫아줌
	코드
파일객체 = open(파일이름, 파일모드)
파일객체.write("문자열")
파일객체.close()
file = open('hello.txt', 'w')  # hello.txt 파일을 쓰기 모드(w)로 열기. 파일 객체 반환
file.write('Hello, world!')  # 파일에 문자열 저장
file.close()  # 파일 객체 닫기

2.파일에 문자열 읽기

변수 = 파일객체.read()
file = open('hello.txt', 'r')  # hello.txt 파일을 읽기 모드(r)로 열기. 파일 객체 반환
s = file.read()  # 파일에서 문자열 읽기
prinst(s)  # Hello, world!
file.close()  # 파일 객체 닫기

2-1.자동으로 파일 객체 닫기 with as

  • 파이썬에서 with as를 사용하면 파일을 사용한 뒤 자동으로 파일 객체를 닫아줌
with open(파일이름, 파일모드) as 파일객체:
	코드

3.문자열 여러 줄을 파일에 쓰기, 읽기


3-1.반복문으로 문자열 여러 줄을 파일에 쓰기

with open('hello.txt', 'w') as file:  # hello.txt 파일을 쓰기 모드(w)로 열기
	for i in range(3):
    	file.write('Hello, world! {0}\n'.format(i))

3-2.리스트에 들어있는 문자열을 파일에 쓰기 writelines()

  • writelinessms는 리스트 각 문자열 끝에 \n 붙여줘야함
파일객체.writelines(문자열리스트)
lines = ['안녕하세요.\n', '파이썬.\n', '코딩 도장입니다./n']

with open('hello.txt', 'w') as file:  # hello.txt 파일을 쓰기 모드(w)로 열기
	file.writelines(lines)

3-3.파일의 내용을 한 줄씩 리스트로 가져오기 readlines()

변수 = 파일객체.readlines()
with open('hello.txt', 'r') as file:  # hello.txt 파일을 읽기 모드(r)로 열기
	lines = file.readlines()
    print(lines)

3-4.파일의 내용을 한 줄씩 읽기 readline()

  • readline으로 파일을 읽을 때는 while문 사용
  • 더 이상 읽을 줄이 없을 때는 빈 문자열 반환
변수 = 파일객체.readline()
	line = None  # 변수 line을 None으로 초기화
    while line != '':
with open('hello.txt', 'r') as file  # hello.txt 파일을 읽기 모드(r)로 열기
	line = None  # 변수 line을 None으로 초기화
    while line != '':
    	line = file.readline()
        print(line.strip('\n'))  # 파일에서 읽어온 문자열에서 \n 삭제하여 출력

3-5.for 반복문으로 파일의 내용을 줄 단위로 읽기

with open('hello.txt', 'r') as file:  # hello.txt 파일을 읽기 모드(r)로 열기
	for line in file:  # for에 파일 객체를 지정하면 파일의 내용을 한 줄씩 읽어서 변수에 저장함
                       
    	print(line.strip('\n'))  # 파일에서 읽어온 문자열에서 \n을 삭제항 출력

📍 파일 객체는 이터레이터
변수 여러 개에 저장하는 언패킹도 가능, 할당할 변수의 개수와 파일에 저장된 문자열의 줄 수가 일치해야함


4.파이썬 객체를 파일에 저장, 가져오기

  • 파이썬 객체를 파일에 저장하는 과정을 피클링(pickling)
  • 파일에서 객체를 읽어오는 과정을 언피클링(unpickling)

4-1.파이썬 객체를 파일에 저장하기

  • 피클링은 pickle 모듈의 dump 메소드를 사용
import pickle

name = 'james'
age = 17
address = '서울시 서초구 반포동'
scores = {'korea':90, 'english':95, 'mathematics':85 'science':82}

with open('james.p', 'wb') as file:  # hello.txt 파일을 바이너리 쓰기 모드(wb)로 열기
	pickle.dump(name, file)
    pickle.dump(age, file)
    pickle.dump(address, file)
    pickle.dump(scores, file)

4-2.파일에서 파이썬 객체 읽기

  • 언피클링은 pickle 모듈의 load 사용
  • 반드시 파일 모드를 바이너리 읽기 모드 'rd'로 지정
import pickle

with open('james.p', 'rb') as file:  # hello.txt 파일을 바이너리 읽기 모드(rb)로 열기
	name = pickle.load(file)
    age = pickle.load(file)
    address = pickle.load(file)
    scores = pickle.load(file)
	print(name)
    print(age)
    print(address)
    print(scores)
profile
기록으로 흔적을 남기는 것을 좋아합니다

0개의 댓글