맞는데 왜 틀릴까..?

Python

Python 실습 문제 8 (파일 입출력, Pandas)

안도일 2022. 5. 4. 13:58

읽어온 파일을 split을 통해 각 속성에 맞는 리스트에 넣어주고 후에 zip으로 묶어주는 로직이 중요하다.

 

 

 

 

대부분 8-1과 비슷한 로직이나 46번째 줄에 있는 파일 쓰기 모드가 추가되어 있는 문제다.

문자열 s에 입력할 요소를 format을 통해 잘 정리하면서 더해가는 로직이 중요하다.

 

 

 

 

먼저 행렬의 정보가 담겨있는 matrix_data 이름의 파일을 준비한다.

matrix_data에 저장된 행렬의 정보가 연속해서 여러 개 있어서 정확하게 정보를 읽어오게 하는 로직을 짜는데 어려움이 있었다.

또한 준비해둔 Class Mtrx는 그 행렬의 정보가 기본적으로 1차원 리스트로 담겨있어야 하는데 파일을 읽어올 때 2차원 리스트로 변경되어서 문제가 있었다.

 

처음 생각한 방법은 맨 첫줄에 행과 열의 정보가 나오니까 readlines()를 이용해 열의 개수만큼만 정보를 읽어 들이고,

 break를 이용해 빠져나온 후, 그다음부터 새로운 행렬의 정보를 읽어 오려고 하였다.

 

하지만 readlines()은 break 후부터 읽어 들일 줄 알았는데 break를 사용해도 파일의 끝까지 읽었다고 판단해 다시 처음부터 파일을 읽기 시작했기 때문에  for문과 break를 이용한 로직은 사용할 수 없었다.

 

따라서 readline을 이용하였고 2차원 리스트로 생성된 것은 sum(, [])을 사용해 1차원 리스트로 병합해 주었다.

 

 

 

 

 

 

import CustomJsonEncoder를 이용해 클래스를 포함 시켰다.

pickle은 이진파일로 정보를 저장하기 때문에 그 크기가 json 파일 보다 작다.