loading
본문 바로가기
Python/공부

[PYTHON] 13. 파일 입출력

by 원쿤짱쿤 2022. 7. 25.
반응형

open(): 파일을 특정한 모드로 여는 함수입니다. 읽을때는 r. 쓸때는 w

read(): 파일 객체로부터 모든 내용을 읽는 함수입니다.

f = open("input.txt", "r", encoding="UTF-8")
f.seek(9) #9바이트의 위치 부터 읽는다. 한글자당 3바이트임.
data = f.read()
print(data)
f.close()

#결과값 : input.txt 파일의 값이 출력된다.


txt파일:
안녕하세요
홍길동입니다.
세번째 줄에는 무슨 말을 쓸까요?

readline(): 파일 객체로부터 한 줄씩 문자열을 읽는 함수입니다.

f = open("input.txt", "r", encoding="UTF-8")
count = 0
while count < 3:
    data = f.readline()
    count = count +1
    print("%d번째 줄: %s" %(count,data), end='')
f.close

#결과값
1번째 줄: 안녕하세요
2번째 줄: 홍길동입니다.
3번째 줄: 세번째 줄에는 무슨 말을 쓸까요?

readlines():전체 내용을 한번에 리스트 담는 함수입니다.

f = open("input.txt", "r", encoding="UTF-8")
list = f.readlines()
print(list)

#결과값 : ['안녕하세요\n', '홍길동입니다.\n', '세번째 줄에는 무슨 말을 쓸까요?']
f = open("input.txt", "r", encoding="UTF-8")
list = f.readlines()

for i,data in enumerate(list):
    print("%d번째 줄: %s" %(i + 1,data), end='')
f.close

#결과값
1번째 줄: 안녕하세요
2번째 줄: 홍길동입니다.
3번째 줄: 세번째 줄에는 무슨 말을 쓸까요?

 

with 사용

:파일을 읽고 close까지 사용하는데, 이부분이 번거로우며,,

자동열고 자동 닫게 해주며, 메모리할당 해제까지 지원해주는 문법

with open("input.txt", "r", encoding="UTF-8") as f:
    list = f.readlines()
    for i,data in enumerate(list):
        print("%d번째 줄: %s" %(i + 1,data), end='')

 

 

파일의 단어 빈도수 찾기.

분석해보자..

def prosess(filename):
    with open(filename, "r") as f:
        #키: 알파벳, 값: 빈도수
        dict = {}
        data = f.read()
        for i in data:
            if i in dict:
                dict[i] += 1
            else:
                dict[i] = 1
    return dict
dict = prosess("input.txt")
print(dict)

#결과값: 
{'a': 5, 'w': 8, 'd': 1, 'g': 1, ' ': 1, 'k': 6, 'r': 3, 'i': 4, 'n': 4, 'j': 4, '\n': 2, 'p': 1, 'q': 3, 'l': 2, 'm': 3, 's': 2}



# 빈도수를 기준으로 내림차순 정렬을 수행합니다/.
dict = sorted(dict.items(), key=lambda a:a[1], reverse=True)
print(dict)

#결과값: 
[('w', 8), ('k', 6), ('a', 5), ('i', 4), ('n', 4), ('j', 4), ('r', 3), ('q', 3), ('m', 3), ('\n', 2), ('l', 2), ('s', 2), ('d', 1), ('g', 1), (' ', 1), ('p', 1)]




for data, count in dict:
    if data == '\n' or data == ' ':
        continue
    print("%d번 출현: [%c]" %(count, data))
print(dict)

#결과값: 
8번 출현: [w]
6번 출현: [k]
5번 출현: [a]
4번 출현: [i]
4번 출현: [n]
4번 출현: [j]
3번 출현: [r]
3번 출현: [q]
3번 출현: [m]
2번 출현: [l]
2번 출현: [s]
1번 출현: [d]
1번 출현: [g]
1번 출현: [p]