[Python]리스트, 딕셔너리 메모장에 저장,불러오기
- Python/기초
- 2021. 4. 3.
리스트나 딕셔너리를 메모장에 저장하는 방법에 대해 설명하겠습니다.
데이터를 저장은 해야 하는데 엑셀에 하기엔 너무 무겁고 그렇다고 피클로 하면 데이터를 불러올 때마다
파이썬을 실행시켜야 하는데 이럴 때 가볍게 저장할 수 있는 곳이 메모장인 것 같습니다.
메모장에 출력 결과를 넣는 이유는 빠르게 저장할 수 있고 코딩도 간편합니다.
스피드가 필요할 땐 아주 적합합니다.
하지만, 많은 양의 데이터를 저장하기에는 조금 안 좋습니다. 정리가 안되서인데요.
메모장은 최소한의 기능만 있어서 데이터 자체가 복잡해지면 정리가 불가능합니다.
정리정돈이 필요한 데이터인 경우 파이썬으로 미리 정리하셔서 엑셀에 저장하는 걸 추천합니다.
리스트를 메모장에 저장하기
리스트 안에 있는 원소들을 하나씩 저장하는 방법입니다.
먼저 준비한 리스트는 S&P500 종목명 리스트입니다. ex라 하겠습니다.
ex
메모장에 넣어봅시다.
with open을 쓰면 간단하게 메모장에 저장할 수 있습니다.
with open('sp500.txt','w',encoding='UTF-8') as f:
for name in ex:
f.write(name+'\n')
이렇게 저장을 했습니다. 아주 간단합니다.
메모장에 저장을 할 때 조심해야 할 것이 두 가지가 있는데
첫번째는 encoding 입니다.
파이썬은 기본이 UTF-8 이 아니어서 오류가 생깁니다.
encoding을 지워보겠습니다.
with open('sp500.txt','w') as f:
for name in ex:
f.write(name+'\n')
encoding을 하지 않으면 위와 같이 UnicodEncodeError가 뜹니다.
영어권이 아닌 이상 왠만하면 enocding을 항상 붙이는 것이 좋습니다.
두번째는 한줄 띄기입니다.
name 뒤에 '\n' 을 붙여놨습니다.
이걸 하지 않으면 메모장에서는 한줄을 띄지 않습니다.
with open('sp500.txt','w') as f:
for name in ex:
f.write(name)
줄 띄어쓰기를 하지 않아서 어디가 시작이고 끝인지 알 수 없게 됩니다.
딕셔너리 메모장에 저장
딕셔너리에 있는 내용을 딕셔너리처럼 메모장에 넣어봅시다.
리스트처럼 원소를 가져오면 바로 저장하는 방식으로는 딕셔너리 저장을 할 수가 없습니다.
문자열로 형태를 만들어 저장하는 방법으로 가야합니다.
준비한 딕셔너리는 S&P500 의 코드와 종목명으로 구성된 딕셔너리입니다.
test_dict
이 형태 그대로 가지고 가야합니다.
f-string을 이용하겠습니다.
딕셔너리 내용을 그대로 가져올 수 있습니다.
with open('sp500.txt','w',encoding='UTF-8') as f:
for code,name in test_dict.items():
f.write(f'{code} : {name}\n')
메모장에 저장할 때는 문자열로 만들어놓으면 왠만하면 다 저장됩니다.
그 특징을 잘 이용하면 딕셔너리뿐만 아니라 다른 출력결과도
위와 같은 방식으로 하면 다양한 형태(그래봤자 문자열 종류지만)로 저장할 수 있습니다.
불러오기
이제 다시 메모장에 있는 내용을 파이썬으로 불러오겠습니다.
불러오는 방법은 세가지가 있습니다.
- readline()
- readlines
- read
모두 문자열을 불러오겠으나 약간 출력하는 방식이 다릅니다.
1.readline()
readline은 하나씩 출력하는 방식입니다.
f = open('./sp500.txt','r')
line = f.readline()
print(line)
f.close()
위와 같이 하면 첫줄만 출력이 됩니다.
모든 줄이 나오게 하고 싶다면 while을 이용합니다.
f = open('./sp500.txt','r')
while True:
line = f.readline()
if not line : break
print(line)
f.close()
하나씩 해서 모든 줄이 나왔습니다.
2. readlines
이번엔 readlines 함수입니다.
각 줄을 리스트에 담아줍니다.
f = open('./sp500.txt','r')
lines = f.readlines()
f.close()
lines
리턴이 리스트이지만 \n 까지 가져오기 때문에 약간 번거로운 부분이 있긴합니다.
3. read
read는 파일 내용 전체를 문자열로 출력해줍니다.
f = open('./sp500.txt','r')
data = f.read()
f.close()
data
하나도 빠짐없이 모두 하나의 문자열으로 나오게 됩니다.
오류
저장할 때도 인코딩을 했듯이 불러오기를 할 때도 encoding을 해야할 수도 있습니다.
이건 무조건은 아니라서 위에 내용에 넣지는 않았지만
메모장의 내용을 불러오기 위해 open을 요청하면 다음과 같이 오류가 뜰 수도 있습니다.
코덱을 내 맘대로 할 수는 없고 이럴 때는 다음처럼 encoding='UTF8' 을 넣어주면 됩니다.
f = open('./sp500.txt','r',encoding='UTF8')
리스트와 딕셔너리를 메모장에서 저장하고 불러오는 방법을 알아보았습니다.
관련포스팅
[Python/기초] - [Python] while 반복문 쓰기
[Python/기초] - [Python] 문자열(string) 다루기
'Python > 기초' 카테고리의 다른 글
[Python] conda 기본 명령 (0) | 2021.04.24 |
---|---|
[Python] Set (0) | 2021.04.18 |
문자열 포맷 출력 (0) | 2021.03.31 |
딕셔너리 key 변경하기 (0) | 2021.03.27 |
[Python] Range, Enumerate (0) | 2021.03.17 |