지난번 open 함수의 '파일 생성하기'에 대해 알아봤다면 이번에는 '파일 불러오기'에 대해서 알아보자. 지금까지 데이터를 파이썬 코딩 중간에 만들어서 넣었다면, 파일 불러오기는 기존에 오랫동안 또는 많은 양의 데이터가 저장되어있다고 할 때 하나씩 데이터를 입력하기에는 매우 오랜 시간이 걸리고 또한 직접 하나씩 입력하다 보면 실수가 발생할 수 있다. 그래서 데이터가 저장되어 있는 해당 파일을 파이썬으로 가져와서 사용할 수 있는 방법에 대해 알아보고자 한다.
실제로 저장되어 있는 파일을 파이썬으로 가져온다면 저장되어 있는 데이터를 이용해 분석을 하거나 예측을 한다는 의미로 지금까지 배웠던 것보다 실제 업무에서 훨씬 밀접하게 사용되는 부분일 것이다. 어느 정도 규모가 있는 기업들은 회사가 가지고 있는 고객정보, 상품정보, 판매정보 등이 누적되어 있을 테니 말이다.
외부 데이터를 불러오는 건 가장 기초적인 부분이지만 기초적인 게 가장 쉽다는 걸 의미하는 것은 아니다. 실제로 파일을 불러오는 경우 다양한 경우의 수가 발생하여 데이터를 제대로 불러오기 위해서 시간이 많이 걸리는 경우도 수두룩하다.
파일 불러오기
앞서 얘기한 바와 같이 파일 불러오기는 기존의 회사에서 가지고 있는 오랜 시간 축적해온 데이터를 파이썬으로 불러와 이용하기 위해서는 필수적인 기능이다. 저장되어 있는 데이터를 분석하기 위한 시작점이라고도 할 수 있다.
먼저 new.txt 안에 아래와 같이 2개의 칼럼과 3개 로우로 구성된 데이터가 들어있다고 하자. 그럼 우리는 이제 이 데이터를 파이썬으로 불러오기 위해 어떻게 해야 하는지에 대해 알아보자.
불러오기 위해서는 파일 생성하기와 마찬가지로 open함수를 통해 불러오지만 파일 모드에 'w'가 아닌 'r'을 입력해준다.
- 변수명 = open("저장경로/파일명. 확장자명", '파일 모드')
readline
위의 파일을 불러오기 위해서 readline이라는 명령어를 이용하여 불러왔다. 출력 결과를 보면 3줄 중 첫 번째 줄만 출력된 것을 볼 수 있다. readline이라는 명령어 자체가 첫 줄만 가져오라는 명령어이기 때문에 당연한 결과다.
우리는 파일에 있는 3행 2열을 모두 불러오고 싶었지만 첫 줄만 불러오게 되어 원하는 결과를 얻어내지는 못했다. 하지만 다음과 같이 한 줄만 불러와야 하는 경우도 필요할 때 있을 테니 일단 알아두고 넘어가자.
readlines
readlines를 사용하면 줄 단위로 리스트라고 인식한다. 따라서 아래 출력 결과를 보면 '1 aaa'가 하나의 값으로 묶여 있는 것을 볼 수 있다. 3개의 요소로 불러온 것을 볼 수 있다. 물론 뒤에 추가 작업을 하면 공백을 기준으로 2개로 나눌 수 있겠지만 원천 데이터에 예외 경우도 있을 수 있으니 좋은 방법은 아니다. 애초에 불러올 때부터 분리되어 가져오는 게 좋다.
그리고 첫 번째와 두 번째 요소에는 '\n'이라는 값이 뒷부분에 붙어있다. '\n'의 의미는 줄 바꿈을 의미한다. 어떻게 적용되는지 기억나지 않는다면 아래 링크 내에서 '문자열 줄 바꾸기' 부분을 참고하면 도움이 될 것이다.
[파이썬 기초] 자료형 - 숫자형/문자형 자료 사용법 (tistory.com)
자 아래 부분은 위의 readlines의 결과를 보고 한 줄씩 출력되도록 for문을 이용하여 출력해봤다. i번째 요소를 출력하도록 반복했으니 첫 번째 요소부터 세 번째 요소까지 한 줄씩 출력된 것을 볼 수 있다. 하지만 여기서도 문제가 있어 보인다. 줄과 줄 사이에 빈 줄이 추가되어 있다. 이유는 '\n'이 포함되어 있어 줄 바꿈으로 인식하여 공백인 줄이 생성된 것으로 판단된다. 앞의 결과보다는 조금 나아졌지만 아직 내가 원하는 출력 형태는 아닌 것이다.
read
read는 파일에 있는 내용 전체를 문자열로 반환하는 명령어이다. 결괏값을 보면 원하는 결과와 동일한 형태로 보인다. 하지만 사실 read는 문자열로 반환하는 명령어다라고 했으니 1열에 있는 값들이 만약 숫자라면 원하는 바와 다를 것이다. 또한 눈에 보이는 것과 실제 어떻게 생겼는지는 다를 수 있다.
이를 확인해보기 위해서는 현재 생성된 내용을 데이터로 저장해서 다시 불러올 때 동일하다면, 아니면 저장해서 생성된 파일을 열어봤을 때 동일한 형태를 이루고 있다면 제대로 생성했다고 할 수 있을 것이다. 이 부분에 있어서는 다음번 저장하기 부분을 다룰 때 알아보도록 하자.
이와 같이 텍스트라는 가장 간단한 형태의 데이터를 불러오는 데 있어서도 여러 가지 문제점이 발생하였다. 그리고 심지어 마지막 실행한 결과도 정확한지 검토해보지는 않았다.
대신 오늘 해본바로 알 수 있었던 건 여러 가지 데이터를 불러오는 방법에 대해 알았고, 데이터 불러오는 게 쉽지 않다는 것을 알았다는 것이다. 따라서 실제로 업무에 적용하는 경우 이런 부분에 대해 이해하고 한다면 일정을 세우거나, 작업 시 데이터 불러오기에 대한 부분을 고려해 만들 수 있을 것이다.
with
앞에 '파일 생성하기'에서 open으로 열었으면 close를 해야 한다고 얘기했다. 그에 따라서 이번 예제에서도 보면 open의 마지막에는 항상 close로 닫아주고 있다. 이 귀찮은 작업을 자동으로 할 수 있는 명령어가 있는데 바로 with문이다. 아래는 with문을 사용하는 방법이다. read문을 사용했을 때와 동일한 결과를 생성하게끔 만들어 봤다.
먼저 open 앞에 변수명 대신 with를 사용하고 as 뒤에 별칭을 넣어준다. 별칭은 원래 open 앞에 사용했던 변수명과 유사하다고 생각하면 된다. 그리고 아래 부분은 동일하게 작성하고 close 명령어가 있는 줄만 제외한다. 코드가 조금 더 간단해진 것을 볼 수 있으며 혹시 close를 하지 않아 생기는 문제에 대해 걱정할 필요가 없다.
'방구석코딩 > 파이썬 기초문법' 카테고리의 다른 글
[파이썬 독학] 클래스(class) 멤버변수 : 클래스 내부 / 외부 사용법 (0) | 2022.07.22 |
---|---|
[파이썬 독학] 클래스(class) 개념 이해 (0) | 2022.07.11 |
[파이썬 독학] open 함수① - 파일 생성하기 (0) | 2022.07.01 |
[파이썬 독학] input, print 명령어 (0) | 2022.06.28 |
파이썬 코딩 툴 비교 (0) | 2022.06.26 |
댓글