본문 바로가기
생산성 UP/파이썬

문과생의 파이썬 공부_#5. 파일 입출력

by 하찮이 2020. 8. 11.

 

오늘 밤 마지막 파이썬 포스팅.

 

youtu.be/KJSXolyj4DM

 

갑자기 이 노래가 생각나서 들었다. 형돈이와 대준이의 '안좋을 때 들으면 더 안좋은 노래'. 예전엔 그냥 웃기다고 좋아했는데, 지금 들으니 명곡이네. 철학적이고 삶의 무게도 느껴지고.

 

다만 뮤비 썸네일 보고 흠칫했다. 화질도 깨져서 이 시간에 보니 더 무서움. 이제 정말 자야지.

 

 


파일 생성하기

open(파일명, 파일 열기 모드)

 * 파일 열기 모드는 w(쓰기모드 write), r(읽기모드 read), a(추가모드 append)의 3가지가 있음

# a.txt 파일 생성하기

f = open("a.txt", 'w')
f.close()

 


파일 쓰기

파일객체.write(내용) : 파일에 내용을 입력

 * 이미 존재하는 파일을 쓰기모드로 열 경우 원래 있던 내용이 모두 사라짐

f = open('b.txt', 'a', encoding='utf8')
for i in range(1, 11):
      line = "%d번 째 줄입니다.\n" % i
      f.write(line)
f.close()

# encoding="" : 인코딩 종류
# %d : 문자변수로, 특정변수(위 경우 i변수)와 매칭이 됨
# \n : 줄바꿈 문자

 

<참고> 포맷 코드
%d : 십진법(decimal). 정수(Integer)
%f : 부동소수(float-point)
%o : 8진수
%x : 16진수(Hexadecimal)
16진수는 0 1 2 3 4 5 6 7 8 9 a b c d e f 16진수의 f는 십진수의 15
%% : % 문자기호 하나로 인식
%s : 문자열(string)
%c : 문자 1개(character)

 


파일 읽기

파일객체.read() : 파일 전체 내용을 하나의 문자열로 읽어옴

파일객체.readline() : 파일의 내용에서 한 줄만 읽어오는 함수

f = open("a.txt", 'r', encoding='utf8')
line = f.readline()
print(line)
f.close()

f = open("b.txt", 'r', encoding='utf8')
while True:    
    line = f.readline()    
    if not line:
        break
    print(line)  # print(line, end='')
f.close()

 

파일객체.readlines() : 파일 내용을 모두 불러와서 리스트 형태로 저장

f = open("b.txt", 'r', encoding='utf8')
lines = f.readlines()
for line in lines: 
    print(line)
f.close()

#print함수는 기본적으로 end='\n'이 포함된 상태임. print(, end=' ')하면 줄바꿈이 없어지고 print(.strip)하면 공백이 전부 사라짐

 

<참고>
인코딩 encoding : 문자를 코드로 변환(컴퓨터는 문자를 인식할 수 없기 때문에 숫자와 문자를 매칭시켜서 문자를 인식함). utf8, euckr과 같이 파일 내용을 읽는 함수

- utf8 : 유니코드로, 전세계 문자를 표현 가능. 한글 1자가 3바이트.
- ecukr : 한글, 한국 통용 한자, 영문 표현 가능. 다양한 언어 표현 불가능. 한글 1자가 2바이트

디코딩 decoding : 코드를 문자로 변환

파일추가

f = open("a.txt", "a", encoding='utf8')
for i in range(11, 20):
    line = "%d번 째 줄입니다.\n" % i
    f.write(line)
f.close()

With 구문

with open(파일명, 파일 읽기 모드) as 파일객체 :  : f=open 함수로 파일을 열면 항상 close해주는 것이 번거로움. with 구문과 함께 사용 시 해당 블록을 벗어나면 자동 close됨. 코드 3줄을 2줄로 줄일 수 있는 요약 기능.

 

with 구문 없는 경우

with 구문 쓰는 경우


f = open('파일명', '파일열기모드')
f.write("Hello")
f.close()

with open('파일명', '파일열기모드' as f:
    f.write("Hello")

 


csv

csv : Comma-Seperated Values의 약어로, 쉼표로 분류된 값이라는 뜻임. 의미 그대로 데이터가 쉼표(,)로 구분되어 있는 데이터(확장자는 csv). 엑셀로 쉽게 데이터를 열 수 있고, 텍스트 파일이라서 메모장으로도 쉽게 열 수 있음. 데이터 추출/분석/입력 시 많이 사용하는 형식.

 

<참고>
Kaggle : 데이터 분석&머신러닝 학습 플랫폼

 

 

댓글