📍 intro
영타 연습을 위해 따로 설치가 필요없는 온라인용 말랑말랑 한컴타자⌨ 를 사용했다.
불러온 글
탭에 원하는 txt 파일을 업로드해서 타자 연습을 할 수 있게 되어있다.
파일 규격을 UTF-8로 변환 후 불러와야해서 파이썬 파일 입출력을 활용했다.
겸사겸사 파이썬에서 파일을 열고 저장하는 방법을 복습해보자 ❕
파일 읽기(read)는 파일을 여는 것, 파일 쓰기(write)는 파일 저장을 의미한다.
좀 더 큰 개념으로 살펴보면,
컴퓨터는 문자를 못 읽는다. 숫자 코드로 변환해서 알려줘야 한다.
이러한 문자와 숫자 간 변환 방식을 문자코드라고 한다.
문자를 코드로 변환하는 것이 인코딩(encoding), 코드를 문자로 변환하는 것이 디코딩(decoding)이다. 만약 utf-8로 인코딩한 파일이 있다면, 이는 utf-8 방식으로만 디코딩할 수 있다.
파일 I/O와는 다른 개념인 점을 유의하자
처음에 파일 저장과 디코딩이 헷갈렸는데(..💻🖥) 코드를 문자로 바꾸는 디코딩은, 파일 인식 과정에서 컴퓨터가 하는 일이지 내가 하는게 아니었다. 난 그저 인코딩만 잘 해서 컴퓨터에게 넘겨주면 될 뿐
모든 텍스트 파일은 특정한 규격의 문자코드, 인코딩 방법을 갖는다.
인코딩 방식 | 문자 코드 | 언어 |
---|---|---|
UTF8⭐ | 유니코드 | all |
CP949 | ASCII, ANSI | 한글 등 |
EUC-KR | EUC-KR | 한글, 영어, 한문 등 |
open() 함수를 사용해서 파일을 열거나 저장할 수 있다. open() 함수에는 모드 설정값을 사용한다.
모드 | 의미 |
---|---|
'w' | 쓰기(write, 저장) |
'r' | 읽기(read, 열기) |
'a' | 추가(append, 파일 마지막에 새로운 내용 추가) |
open() 함수는 with 구문과 함께 사용하면 훨씬 오류를 줄일 수 있다. with 블럭을 빠져나가면 알아서 close가 실행되기 때문이다. __enter__(), __exit__()를 자동 호출해주기 때문에 예외발생 또는 resource release 누락 시에도 정상 처리해준다. 즉, try / except / finally를 명시적으로 사용한 것과 같은 효과를 얻게 된다.
파일 읽기는 .read() 말고도 readline(), readlines(), for문을 이용한 방법이 있다.
with open("data/test.txt", 'r', encoding='UTF8') as f:
for line in f:
print(line)
타자 연습에 많이 쓰는 소설 <무진기행>, <어린왕자>의 텍스트 파일을 구했다. 인터넷에 돌아다니는 걸 다운받아서 써도 되고, 좋아하는 뮤지션의 가사를 긁어다가 메모장으로 txt파일을 만드는 방법도 있겠다.
그럼 파일 I/O를 활용해서 인코딩 방식을 바꿔보자.
"어린왕자.txt"의 인코딩 방식을 확인한다. (utf8이 필요한 상황)
Jupyter Notebook에서 파이썬 코드 새로 열기
텍스트 파일은 코드(ipynb)와 같은 경로에 있어야 편하다.
기존 데이터를 담은 변수 만들기
r
모드로 "어린왕자.txt" 파일을 읽어온다.with open("어린왕자.txt", "r") as little:
data = little.read()
w
모드인채로 open() 실행을 먼저 한다.with open("The little prince.txt", 'w', encoding="utf8") as filename:
filename.write(data)