지난 시간에 폴더를 만들고 해당 폴더로 이동하기 위해
os 모듈을 이용해서 동작시켜봤습니다.
그럼 이번 시간에는 폴더에 저장할 데이터인 파일을 생성하고
해당 파일에 내용을 쓰기/읽기를 통해
파일을 관리하는 방법에 대해 배워보겠습니다.
먼저 엑셀파일과 csv파일을 관리하기 위해서는
pandas라는 모듈이 필요합니다.
먼저 pandas 모듈을 설치하고 시작하겠습니다.
# numpy module
# pandas module
cmd : pip install numpy
cmd : pip install pandas

설치를 완료하셨다면, txt파일을 먼저 만들어 보겠습니다.
파일을 관리하는데는 모드가 존재합니다.
외울 필요는 없지만, 기본적인 것은 알고 가는게 좋겠죠?
command | mode |
t | text (default) |
b | binary |
r | read (default) |
w | write |
a | addition write |
+ | read / write |

파일을 저장할 폴더를 만들고 (makedirs) 해당 폴더로 이동합니다.(chdir)
그리고 file을 helloworld.txt로 만들고 쓰기모드를 지정합니다.
그리고 해당 파일을 쓰고, 저장되면 파일을 닫아서 완료합니다.
해당 과정을 거쳐야만 하나의 온전한 파일이 생성됩니다.

파일을 실행해보면 helloworld.txt에 내용이 추가되어 있습니다.
그럼 이번에는 이어쓰기를 수행해서 내용을 추가하겠습니다.


모드를 'w'로 지정하게 되면 위와 같이 기존 내용을 전부 삭제하고,
새로 작성을 하게 됩니다.
그래서 반드시 'a'모드나 '+'모드를 통해서 이어쓰기를 하게 만들어줘야합니다.


엔터키 입력값인 "\n"을 추가하지 않으면
다음 라인부터 쓰기를 하지 않고 바로 뒤부터 작성을 하게 됩니다.
"\n"을 추가해주면 다음 라인부터 작성을 해서 저장합니다.

이번에는 example.txt에 과일리스트를 저장하고
해당 example.txt파일을 읽어서 f 리스트에 저장 후에
리스트를 for문을 통해서 출력하는 코드입니다.
위 코드를 통해 파일 관리의 기본적인 내용이 다 포함되어 있다라고
생각하시면 될 것 같습니다.
기본적으로 실무에서는 파일을 찾고, 없으면 생성해서 기본 값을 설정합니다.
그리고 필요에 따라 파일을 읽어 해당 내용을 읽어와 다른 모듈이 동작할 수 있도록
설정하는 것이 대부분입니다.
한번 환경파일을 설정에 관해 생각해봅시다.
우리는 기계를 다룰 때 항상 환경설정이라는 내용을 봅니다.
왜 환경설정이 있는 걸까요?
바로 이러한 파일리스트를 통해 해당 장비를 켰을 때 기본 정보를 설정하고
동작을 위한 기본 내용을 불러오기 위함입니다.
그러기 위해서는 항상 파일을 읽기/쓰기는 기본입니다.
###
실무에서 사용하는 기본적인 동작.
step 1. file load
전원을 켜면 기본적인 시스템이 config나 기본 setting을 위한 파일을 불러옵니다.
만약 없다면 기본 값을 넣어 파일을 생성합니다.
step 2. file parsing
그리고 파일을 찾고 읽기모드로 파일을 읽습니다.
해당 내용을 파싱하여 필요한 내용을 가져와 정보를 메모리에 저장하고,
다른 프로세스들에게 필요한 정보를 넘겨줍니다.
넘겨받은 프로서스들은 동작하고 기계는 동작하게 되어 있습니다.
step 3. last data save
주기적으로 혹은 이벤트에 의해 현재 상태 데이터를 파일에 저장합니다.
이 내용은 시스템과 환경에 따라 다르기 때문에 그 시스템에 맞게 작성해야합니다.
마지막 데이터 작성은 종료할 때 하는 경우가 대부분이지만,
기계가 갑자기 종료되거나 기타 다른 이유로 종료되기전에 파일을 저장하는 것이 일반적인 내용입니다.
###
이제 csv와 excel 파일로 데이터를 저장해보겠습니다.
# openpyxl and xlwt install
pip install xlwt
pip install openpyxl
먼저 pip 명령어를 통해 xlwt와 openpyxl 모듈을 설치해주세요.

pd.DataFrame을 통해 아래와 같이 프레임 표가 만들어집니다.
그럼 이제 이것을 이용해서 xls과 csv파일에 저장해보겠습니다.
subject는 저희가 만든 DataFrame입니다.
그것을 to_csv나 to_excel을 통해서 파일에 저장이 이루어집니다.

폴더를 열어보면 subject.xls, subject.csv에 생성되어 있습니다.

subject.xls와 subject.csv를 열어보면 아래와 같이 생성되어 있습니다.

xlsx와 csv 형식의 파일 내용을 읽어오기
읽어오기는 openpyxl이라는 모듈을 통해 가능합니다.
그래서 아까 openpyxl를 설치하셨죠?
아까 만든 xlsx파일을 먼저 읽어와서 출력을 해보겠습니다.
xls (x) --> xlsx(o)
xlsx로 변환 후 작업을 진행해야합니다.

csv 읽는 과정 중에 문제가 발생했습니다.

csv는 excel파일과는 다르게 unicode 관련 오류가 떴습니다.
파일을 저장할 때를 잘 생각해보십시오.
csv로 파일을 생성할 때 encoding="utf-8-sig"를 설정했던 것을 기억하시나요?
읽을 때도 다음과 같이 설정해주겠습니다.

정상적으로 출력이 됐습니다.
오늘 배운 내용은 파일 (텍스트, 엑셀, CSV)형식의 관리를 다뤄봤습니다.
'개발 이야기' 카테고리의 다른 글
[파이썬 완전정복] 클래스, 객체지향 프로그래밍(OOP) (1) | 2020.06.22 |
---|---|
[파이썬 완전정복] 예외처리의 활용 방법 (0) | 2020.06.22 |
[파이썬 완전정복] 운영체제 모듈 (os module) [1] (0) | 2020.06.20 |
[파이썬 완전정복] 재활용을 위한 모듈 (module) (0) | 2020.06.18 |
[파이썬 완전정복] 사용자 정의 함수 만들기 (0) | 2020.06.17 |