SMALL

파이썬에서 여러 프로그램을 만들어 사용할 때 중복되는 코드가 있으면 유지보수 관점에서 좋지 않다

함수나 클래스 등을 한 파일에 두고 여러 파일에서 import 에서 사용하고 싶다

즉, 다른 파일에서 코드를 가져와 사용한다

모듈코드

func.py

def add(x, y):
	return x+y
    
def sub(x, y):
	return x-y

이 파일은 메인 코드와 같은 경로에 위치한다

 

메인코드

모든 코드 가져오기

import func

print(func.add(10, 20))
print(func.sub(20, 10))

 

특정 부분만 가져오기

from func import add, sub

print(add(10, 20))
print(sub(20, 10))

 

LIST

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

[Python] 파이썬 파일 입출력  (0) 2023.11.08
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