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

반응형

 

 

파이썬을 사용하다 보면

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

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

 


 

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)

 

 

반응형