[python] 파이썬에서 파일 사용 (파일 읽고 쓰고 저장하기)

반응형

hitesh-choudhary-D9Zow2REm8U-unsplash.jpg

 

 

파이썬을 사용하다 보면

데이터를 가지고 와서 활용하는 경우가 빈번하다.

파이썬에서 파일이란 어떤 것인지 알아보도록 하겠다.

 


 

01.  파일이란,

저장을 통해 하드디스크에 데이터를 영구 보존 시키는 것

02. 파일에서 데이터를 읽는 방법

file = open("test.txt", "r") 
all = file.read()  
print(all)
file.close() 

open( )  :  파일 열기

close( )  : 파일 닫기

* 파일을 열어서 사용하고 있으면 다른 프로그램은 파일에 접근할 수 있다.
그러므로 파일 사용이 끝난 후에는 꼭 close() 함수로 닫는 것이 좋다.

기본적인 파일 모드

"r" : 읽기 모드, 파일 처음부터 읽음
"w" : 쓰기 모드, 파일 처음부터 쓴다.
만약 파일이 기존에 존재할 시 기존 내용이 삭제된다.
"a" : 추가 모드, 파일 끝에 쓴다. 파일이 없으면 새롭게 생성된다.

데이터 읽기

read( ) : 전체 텍스트 읽기
read( 숫자 ) : 전체 텍스트에서 숫자 이전의 인덱스까지 문자를 읽음
readlines( ) : 파일에 저장된 각 줄이 리스트 안에 저장.
한 번에 파일의 모든 줄을 읽는다. 문자열로 반환
➤ ['어제 오늘 날씨가 화창하다.\n', '그러나 다음 주부터 장마가 시작된다.\n', ...]

 

 

03. 파일에서 한 줄씩 읽기

 

file = open("test.txt", "r")
line = file.readline( ).rstrip( )
while line != "" :
    print(line)
    line = file.readline( ).rstrip( )
file.close( )

여기서 

rstrip( ) 메서드는 "줄 맨 끝에 있는 줄 바꿈 기호(\n)를 삭제하고 읽게 해 준다.

파일에서 데이터를 읽을 땐 파일 객체를 모두 문자열로 간주하여 읽는다.

따라서 for 반복문을 사용해도 같은 결과를 나타낼 수 있다.

file = open("test.txt","r")
for line in file:
    line = line.rstrip( )
    print(line)
file.close( )

 

 

04. 파일에서 데이터 쓰고 추가하기

file = open("test.txt", "w")
file = open("test.txt", "a")

"w" : 데이터 쓰기

"a" : 데이터 추가

 

데이터 쓰기는 다음과 같다.

file = open("test2.txt", "w")

file.write("올해 장마는 두 달 동안 지속될 예정이다. \n")
file.write("따라서 습도가 매우 높을 전망이다. \n")
file.write("각 가정에서는 습도 조절에 유의해 주길 바란다. \n")

file.cloes( )

데이터 쓰기는 "test2.txt" 파일이 기존에 있다면,

기존의 내용이 삭제된 후 새롭게 내용을 작성한다.

기존에 없는 새로운 파일 시

새로운 파일을 만들어 내용을 작성한다.

 

데이터 추가는 다음과 같다.

file = open("test2.txt", "a")

file.write("내일 날씨입니다. \n")
file.write("내일은 무더운 기운과 함께 폭염주의보가 내려질 전망입니다. \n")
file.write("바깥 외출 시 양산과 잦은 수분 보충이 필요합니다. \n")

file.close()

데이터 추가는 "test2.txt" 데이터 파일 제일 끝 부분에 새롭게 데이터를 추가한다.

 

05. 파일에서 단어 읽기

 

split()

메서드를 사용하면,

공백 문자를 이용하여 문자열에서 단어를 분리한다.

예를 들면,

문장 " 바깥 외출 시 양산과 잦은 수분 보충이 필요합니다"는

file = open("text.txt", "r")

for line in file:
    line = line.rstrip( )
    word_list = line.split( )
    for word in word_list:
        print(word)

file.close( )
>> 바깥
외출

양산과
잦은
수분
보충이
필요합니다.

결과로 반환된다.

 

06. directory 속 파일 처리

 

os.listdir()

➤ 디렉토리 안의 모든 파일을 얻을 수 있다.

import os
a = os.listdir( )

이를 활용하여 디렉토리 안에서 특정 단어를 사용한 문장을 찾아볼 수도 있다.

 

07. cvs 파일

파일 형식이 txt가 아닌 csv 일 때,

보통 pandas를 사용하여 csv 파일을 읽고 처리하지만,

pandas를 사용하지 않고 파이썬에서 처리하는 방법도 있다.

import csv
f=open('text.csv')
data = csv.reader(f)
for row in data:
    print(row)
f.close( )

csv 모듈을 불러와서

csv 파일을 열어 변수에 저장

reader( ) 함수를 통해 데이터를 읽을 수 있다.

 

만약 UnicodeDecodeError: 'utf-8' codec can't decode byte 가 떴을 때,
이는 인코딩 오류이다.
해결하기 위해서는 인코딩 포맷을 찾아서 
encoding = ' '을 통해 변경해줘야 한다.
인코딩 포멧 찾는 방법은 다음과 같다.

 
import chardet
with open('파일 명.csv', 'rb') as rowdata:
    result = chardet.detect(rowdata.read(1000))
print(result)

 

 

반응형