Story of CowHacker

Python challenge_5번문제 본문

공부/Pythonchallenge

Python challenge_5번문제

Cow_Hacker 2022. 2. 2. 20:19
728x90

안녕하세요 CowHacker입니다.

 

 

 

 

 

 

 

pythonchallenge 5번째 문제를 풀어 볼 거다.

 

 

 

 

http://www.pythonchallenge.com/pc/def/peak.html

 

peak hell

 

www.pythonchallenge.com

흠... 저거 중국에 있는 피라미드 아닌가?

 

 

 

 

 

 

 

발음하다 라..

 

 

 

 

 

 

 

 

 

 

소스코드를 보니 banner.p와

밑 주석 처리된 문장이 눈에 띄었다.

 

 

 

 

 

 

난 아무 소리가 들리지 않았다.

 

그냥 peak hell이란 저 문구의 소리가 친숙하게 들리냐 라는 거 같은데

번역... 상태가.. 큼..

 

 

 

 

 

 

banner.p에 접속해 보겠다.

 

 

 

 

 

 

 

 

 

 

 

 

 

오호라 먼가 떴다.

 

 

 

 

 

 

 

어후.. 어지러워

 

 

 

 

 

 

 

 

저 복잡한 부분 파이썬 크롤링으로 가져올 거다.

 

 

 

 

 

 

 

여전히 복잡하다.

 

 

머 어쩌라는 거지

 

 

 

 

 

 

 

 

 

그 banner.p라는 녀석. p라는 확장자가 먼지 알아봐야 했다.

 

 

 

 

 

 

 

 

오 파이썬과 관련된 확장자다.

 

 

 

 

 

 

 

 

https://docs.python.org/3/library/pickle.html?highlight=pickle#module-pickle 

 

pickle — Python object serialization — Python 3.10.2 documentation

pickle — Python object serialization Source code: Lib/pickle.py The pickle module implements binary protocols for serializing and de-serializing a Python object structure. “Pickling” is the process whereby a Python object hierarchy is converted into

docs.python.org

파이썬 공식문서 홈페이지를 봤다.

 

 

 

 

 

검색을 해봤더니

파이썬 모듈인 pickle이 있었다.

 

 

unpickle 데이터 만이 믿을 수 있다고, pickle 모듈은 보안적이지 않다고 주의를 주고 있다.

 

 

 

 

 

 

 

내려 보던 중 간단하게 쓸만한 예시를 봤다.

 

 

 

 

 

 

 

pickle은 bytes만 받나 보다.

 

 

 

 

 

 

코드를 싹 바꿨다.

 

 

 

 

 

 

여전히 똑같은 에러가 떴다.

 

 

 

 

 

 

 

 

하지만 loads가 아니라 load로 하니깐...

 

 

 

 

잘 나오는 걸 볼 수 있는데

 

 

 

 

 

 

 

 

둘이 차이점은 내가 봤을 때 load가 가공되지 않은 데이터를 줘도 출력해주는 반면

loads는 한번 가공된 데이터를 줘야 하는 느낌이다.

 

 

 

 

 

 

 

 

흠.. 무슨 뜻인가 가만 봤다.

첫 번째 공백은 95..

다음엔 14.. 그리고 공백이 아닌 # 5...

무슨 그림을 리스트로 해놓은 느낌이다..

 

 

 

 

 

 

channel이라고 대문작만 하게 떴다.


from urllib.request import urlopen # url의 데이터를 열어 가져오는 라이브러리다.
import pickle # 여러 자료형을 변환없이 그대로 파일에 저장하고 불러올 때 사용하는 라이브러리다.

#============================================================#
#============================================================# 

url = urlopen('http://www.pythonchallenge.com/pc/def/banner.p') # 해당 url에 대한 데이터를 가져오는 구간이다.
test = pickle.load(url)

for _ in test:
    print("".join([k * v for k, v in _)) # test에서 불러온 값을 v에 넣고 v에대한 딕셔너리 즉 ""옆의 숫자값을 곱해 출력한다.

 


 

 

 

5번 문제 풀기 성공이다.

 

 

 

 

 

 

섯번째 문제를 풀었으니 여

번째 문제로 갈 수 있다. 이

문제에선 python의 pickle이라는 녀석을

끔 알게 됐다.

728x90

'공부 > Pythonchallenge' 카테고리의 다른 글

Python challenge_1번문제_Returns  (2) 2022.02.06
Python challenge_6번문제  (2) 2022.02.04
Python challenge_4번문제  (2) 2022.01.20
Python challenge_3번문제  (2) 2022.01.11
Python challenge_2번문제  (2) 2021.09.12
Comments