본문 바로가기
엘리스 AI 트랙 4기/Data Analysis Study

[Python] 파일 다루기와 list comprehension, sorted

by _sweep 2022. 1. 30.

엘리스에서 제공한 강의와 자료를 보고 정리한 내용입니다.

 

파일 다루기

python에서 파일을 다루는 방법은 다음과 같다.

 

✔️ open()

인자로 주어진 파일을 열고 해당 파일 객체를 반환한다.

open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file : 파일의 path.
  • mode : 파일을 열 때 사용할 모드.(r = 읽기, w = 쓰기 등.)

 

✔️ read()

파일 전체의 내용을 하나의 문자열로 읽어온다.

비슷한 메서드로 readline(), readlines()가 존재한다.

readline()은 한 번에 하나의 라인을 읽어오고 readlines()는 파일 전체를 한 라인씩 읽어와서 리스트를 만들어준다.

 

✔️ write()

파일에 내용을 작성할 수 있다.

비슷한 메서드로 writelines()가 존재하는데 write()는 Binary 코드에서도 사용할 수 있지만 writelines()는 Text만 지원한다.

 

✔️ close()

open()으로 파일 포인터를 열었다면 close()를 사용해 닫아주어야 한다.

단, 다음의 방식으로 파일을 열었다면 close()를 사용하지 않아도 된다.

 

with open('file_name.txt') as file:
    content = file.read()

 

✔️ 줄 단위로 파일 읽어오기

파일을 읽는 것은 보통 줄 단위로 이루어진다.

이때 데이터를 다루기 쉽도록 파일 전체를 읽어오면서 한줄씩 리스트에 저장하는 방법은 다음과 같다.

 

content = []
with open('file_name.txt') as file:
    for line in file:
        content.append(line)

 

 

list comprehension

리스트 컴프리헨션(list comprehension)리스트 안에 식, for문, if문 등을 지정하여 리스트를 생성하는 것을 의미한다.

즉, 리스트를 쉽고 짧게 만들 수 있는 파이썬의 문법 중 하나이다.

 

보통 리스트를 순회하면서 특정 값을 찾아야 할 때는 빈 리스트를 하나 선언하고 for문을 돌며 빈 리스트에 해당하는 값을 삽입하는 방법을 이용했다.

 

fruits = ['apple', 'banana', 'lemon', 'strawberry']
first_letters = []

for fruit in fruits:
    first_letters.append(fruit[0])

 

과일의 이름들이 담긴 fruits 배열이 주어지고 과일의 이름에서 첫글자만을 가져와야 한다면 위와 같이 코드를 작성할 수 있다.

각 과일의 이름에서 첫글자만을 뽑아 담을 리스트인 first_letters라는 빈 배열을 생성하고 fruits를 순회하면서 first_letters에 첫글자를 담고 있다.

 

같은 작업을 list comprehension을 사용하면 다음과 같다.

 

fruits = ['apple', 'banana', 'lemon', 'strawberry']
first_letters = [fruit[0] for fruit in fruits]

 

first_letters라는 리스트를 선언할 때 for문을 넣음으로써 해당하는 값만을 리스트에 넣는 것이다.

즉, 선언과 할당이 한 줄에서 모두 이뤄진다.

 

list comprehension의 기본적인 문법은 다음과 같다.

 

[ ( 변수를 활용한 값 ) for ( 사용할 변수 이름 ) in ( 순회할 수 있는 값 )]

 

이를 기본 베이스로 삼고 if문까지 추가해 조건문으로 필터링을 하며 해당하는 값만을 리스트에 담을 수도 있다.

 

 

 sorted

원본 리스트의 변경 없이 정렬된 새로운 리스트를 반환하는 함수이다.

 

sorted의 기본 구문은 다음과 같이 작성할 수 있다.

 

sorted(iterable, key, reverse=False)
  • iterable : 정렬할 대상.
  • key : 정렬 목적으로 사용할 키.
  • reverse : True이면 역으로 정렬된 리스트를 반환한다.

 

 

🔍 참조

open https://docs.python.org/ko/3/library/functions.html?highlight=open#open 

read https://wikidocs.net/14130

write https://wikidocs.net/14131

close https://wikidocs.net/14306

list comprehension https://shoark7.github.io/programming/python/about-list-comprehension-python

sorted https://docs.python.org/ko/3/howto/sorting.html

 

 

 

 

댓글