SMALL

토익 공부를 위해 영단어를 외우려 한다

영단어 리스트 조작을 위해 파일 입출력을 알아둬야 한다

거창한거 말고 리눅스 CLI 환경으로 만들고 모바일로 SSH 접속하여 실행하면 간편하겠다

 

영단어의 형식은 다음과 같이 하면 읽기도 편하고 처리하기도 편할 것이다

굳이 영단어가 아니더라도 좋다

<vocaList.txt>

hello : 안녕
world : 세상
face : 얼굴; 마주하다

1. 파일 열기

file = open('vocaList.txt', 'r', encoding='utf-8')

 

(CentOS 기본 인코딩은 utf-8, 윈도우의 경우 cp949, 즉 ansi)

첫 번째 인자는 파일 이름

두 번째 인자는 파일 처리 형식

(r : 읽기, w : 덮어쓰기, a : 이어쓰기, x : 해당파일 없을 경우만 쓰기)

(인자에 +를 붙이는 경우 읽기 쓰기 둘 다 가능 ex) w+)

file은 Stream

 

2. 파일 내용 읽기

#한줄 한줄 읽기(개행문자 포함)
for line in file:
    ...

read(), readline(), readlines(), seek() 등의 함수를 이용해 스트림을 활용할 수 있다

근데 굳이 커서 일일이 움직여가며 세밀하게 할 필요까진 없어서 한줄 한줄 읽어서 처리하는게 간편하다

 

3. 파일의 내용을 처리하기

#영단어와 뜻 구분짓기
lstEng = list()
lstKor = list()
for line in file:
    line = line.strip() #개행문자 제거
    kr, eng = line.split(' : ')
    lstEng.append(eng)
    lstKor.append(kr)

for word in list(zip(lstEng, lstKor)):
    print(f"{word[0]}의 뜻은 {word[1]} 입니다.")
# hello의 뜻은 안녕입니다.
# ...
# face의 뜻은 얼굴; 마주하다입니다.

(list 말고 dict, tuple 등 자료구조를 이용해도 문제없을 것이다)

(zip 안쓰고 영단어와 뜻을 병렬로 처리해도 좋다)

 

4. 최종 코드

def read(fileName):
    file = open(fileName, 'r', encoding='utf-8')
    lstEng, lstKor = list(), list()
    for line in file:
        line.strip() #개행문자 제거
        lstEng, lstKor = line.split(' : ')
    return list(zip(lstEng, lstKor))
    
#main
vocaList = read('vocaList.txt')

for word in vocaList:
    input(f"{word[0]}의 뜻은?")
    print(f"{word[1]} 입니다.")

이렇게 하면 단어 목록에 있는 단어를 잘 외울 수 있을 것이다

 

번외) 빈 파일이 생성된 경우의 예외처리

파일이 비었을 경우 1, 아닐 경우 0을 반환하는 함수

import os

def isEmpty(fileName):
    if os.stat(fileName).st_size == 0:
        return 1
    else:
        return 0

 

LIST

'IT > Python' 카테고리의 다른 글

[Python] 외부 모듈 불러오기 Import  (0) 2023.11.08

+ Recent posts