Programming/Python

[Python 3.7] 파이썬 파일 사용법 (쓰기/읽기, 자동으로 파일 객체 닫기, 파일 내용 불러오기, 파이썬 객체 파일에 쓰기/읽기)

Nirsa 2020. 2. 3. 16:05
반응형

 

  • 파일 불러온 후 쓰기/읽기

  • 파일객체 = open('파일명', '파일모드)
  • 파일객체.write('입력할 문자열')
  • 파일객체.close()

우리가 윈도우에 사용할때 처럼 파일에 어떤 내용을 적으려면 우선 그 파일을 열고, 입력할 문자열을 쓰고, 저장 후 파일을 닫는데 파이썬도 마찬가지 입니다. 쓰기(w) 모드와 읽기(r) 모드가 있고 그 외에도 추가(a) 모드나 배타적 생성(x) 모드, 텍스트(t) 모드, 바이너리(b) 모드 등이 있습니다.

## 파일 쓰기
# 쓰기(w) 모드로 Hello.txt 파일을 file 객체로 열기
file = open('Hello.txt', 'w')

# file 객체에 'Hello, World!' 문자열을 작성 후 저장
file.write('Hello, World!')

# file 객체 닫기
file.close()


## 파일 읽기
# 읽기(r) 모드로 Hello.txt 파일을 file 객체로 열기
file = open('Hello.txt', 'r')

# file 객체에서 문자열을 읽은 후 변수 x에 저장
x = file.read()

# 변수 x 출력
print(x)

# file 객체 닫기
file.close()

 

  • 자동으로 파일 객체 닫기

매번 close를 사용하기는 귀찮기 때문에(?) 일반적으로 사용할땐 아래와 같이 자동으로 파일 객체를 닫을 수 있도록 사용 합니다.

with open('파일명', '파일모드') as 파일객체:
    코드
    
ex)
with open('Hello.txt', 'r') as file:
    x = file.read()
    print(x)

 

  • 리스트의 문자열 파일에 쓰기

  • 파일객체.writelines(리스트)

파일에 내용을 작성할 때 하나하나 다 코드에 작성할 필요 없이 문자열로 된 리스트를 사용하여 파일에 내용을 작성할 수 있습니다.

text = ['Hello\n', 'World!']

with open('Hello.txt', 'w') as file:
    file.writelines(text)

 

  • 파일 내용 불러오기

  • 변수 = 파일객체.readline()
  • 변수 = 파일객체.readlines()
  • for문 사용

파일 내용을 불러올 때엔 readlines와 readline을 사용할 수 있습니다.

readline은 파일의 내용중 한 줄만 가져 옵니다.

with open('Hello.txt', 'r') as file:
	b = file.readline()

print(b)
'Hello\n'

 

readlines는 리스트의 형식으로 파일의 내용을 모두 가져 옵니다.

with open('Hello.txt', 'r') as file:
	a = file.readlines()

print(a)
['Hello\n', 'World!']

 

또는 for문을 사용하여 파일의 모든 내용을 가져올 수 있습니다.

with open('Hello.txt', 'r') as file:
	for text in file:
        print(text.strip('\n'))		# 문자를 출력하되 가독성을 위해 \n 제거

 

  • pickle 모듈의 dump를 이용하여 파이썬 객체들을 파일에 쓰기 / 파일 읽기

파일 쓰기는 pickle 모듈의 dump를 이용하여 파이썬 객체들을 파일에 저장할 수 있습니다.

import pickle

name = 'nirsa'
age = 99
address = '서울 특별시'

with open('nirsa', 'wb') as file:
	pickle.dump(name, file)
	pickle.dump(age, file)
	pickle.dump(address, file)

 

파일 읽기는 pickle 모듈의 laod를 이용하여 저장했던 파이썬 객체들을 읽을 수 있습니다. 각 파일 객체를 한줄 씩 읽어 들여서 다시 변수에 저장하고 그 변수를 print로 출력하는 방식 입니다.

import pickle

with open('nirsa', 'rb') as file:
	name = pickle.load(file)
	age = pickle.load(file)
	address = pickle.load(file)
	print(name)
	print(age)
	print(address)

# 결과값	
nirsa
99
서울 특별시

 

반응형