본문 바로가기

python3

Web Crawler 002 - Creating Crawled files and Queue 이번 시간에는 지난 시간에 프로젝트(폴더)를 만드는 코딩에 이어, 웹사이트를 크롤링할 때 크롤링해야 할 웹페이지들의 URL 값을 가지고 있어야 하는데, 그렇게 하기 위해서 queue를 만들어 긁어 올 웹페이지 주소를 넣어 두려고 합니다. 이렇게 queue에 저장된 웹페이지 URL 을 가지고 다 긁어왔으면 해당 URL을 crawled 로 넘겨주어 더 이상 중복 크롤링하지 않게 하려고 합니다. 말보다는 코딩을 보는게 더 빠를거라 봅니다. 시작해 볼까요~? 히위~꼬우~! 지난 시간에 만든 부분에 아래와 같이 주석을 달아 주었습니다. 그리고 이번에 만들 부분에 주석도 함께 넣었습니다. 프로젝트 이름과, 기본 주소를 인자로 받는 파일을 만들어 줄 함수를 아래와 같이 정의하겠습니다. ▼ 기본 URL 을 가지고 어떤.. 더보기
Web Crawler 001 - Creating a New Project 요즈음 들어 귀찮이즘으로 만사를 내 팽개쳐두고 있는데, 블로그를 방문하는 많은 분들이 Python Web Crawling 에 질문을 많이 주시고, 또 방문 로그를 보아도 대부분 Web Crawling 으로 접속을 많이 하시는 듯 하여, 그 후속편을 살짝쿵~ 써보려고 자판을 두드려 보려고 합니다. 혹시 크롤링이 어떤 것인지 잘 모르시는 분은 아래 링크를 한번 보시면 도움이 되시리라 봅니다. [PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler [PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler 예전에 간략히 다룬 웹 크롤러는 블로그.. 더보기
[PYTHON 3] Tutorials 45. Struct (bytes data <-> normal data(human readable)) 안녕하세요. 이번 시간에는 Struct 에 대해서 알아보도록 하겠습니다. 파이썬에서 Struct이 무엇인지부터 얘기를 시작해볼까 합니다. 파이썬에서는 어떠한 형태의 데이터, 가령 numbers, letters, string 와 같은 데이터를 bytes (0,1 으로 이루어진 바이너리 형태의 데이터) 데이터로 converting 할 수 있습니다. 그럼 왜 이렇게 bytes 형태의 데이터로 전환을 할까요? 이는 우리가 사용하는 컴퓨터가 데이터를 저장하거나 네트워크를 통해 이러한 데이터를 주고 받을 때, 이진형태의 bytes data( 0, 1 )로 데이터를 다루기 때문입니다. 그러나 이런 형태의 데이터는 인간이 확인하여 인지하기는 힘든 점이 있습니다. 그러므로 평소에는 인간들이 읽을 수 있는 형태로 스크린에.. 더보기
PyQt installation with python3 on Mac OS X by using HOMEBREW You can install it with homebrew using the --with-python3 flag:unset PYTHONPATH brew install sip --with-python3 brew install pyqt --with-python3And relink the site packages if necessary. 더보기
[PYTHON 3] Tutorials 44. Image Transformation - Resize, Flip, Rotate, Stretch (이미지 변형하기 - 리사이즈, 회전, 뒤집기, 확장...etc) 이번 시간에는 크기 조절, 회전, 뒤집기, 확장 등 이미지 변환에 대해 알아보고자 합니다. 우선 원본 이미지 파일입니다. ▼ 원본 이미지의 현재 크기는 960 x 540 으로 확인됩니다.▼ 프로그램으로 확인해 보아도 동일하게 960 x 540으로 확인이 됩니다. ▼ 아래 코드는 원본을 열고 보여주게 하는 코드입니다. ▼ 960 x 540 사이즈의 이미지를 500 x 500 으로 resize 해 보려고 합니다. 주의할 점은 resize() 메서드 사용시 바깥쪽 () 는 메서드에 해당하는 괄호이며, 내부 () 괄호는 pixel 가로, 세로에 해당하는 괄호입니다. 즉, 괄호가 2개 사용된다는 점입니다. ▼ 강제로 500 x 500 으로 조절한 이미지 입니다. 뭔가 뚱~ 해진듯한 느낌입니다. ▼ 원본 이미지를 .. 더보기
[PYTHON 3] Tutorials 43. Image Merge Effect (서로 다른 채널을 이용 이미지 병합하기 such ghost images) 이번에는 여러 장의 이미지를 가지고 각각의 이미지에서 채널을 분리하여 이 채널(모드)들을 서로 교차시켜 보겠습니다. 간혹 크리피한 이미지들, 가령 귀신 그림마냥 하나의 이미지에 다른 이미지가 살며시 얹혀 있는 그림이 있는데, 이렇게도 구현할 수 있는 방법 중 하나입니다. 말보다는 코드를 통해 보겠습니다. 다소 차이는 있겠으나, 구현 방법은 비슷합니다. 원본 이미지 - 고양이들 찬조출현.▼원본이미지(고양이들)를 열어 cat 이라는 변수에 저장합니다. ▼cat 에서 r,g,b 각각의 채널(모드)로 분리를 합니다. ▼분리한 채널(모드)를 merge(병합) 을 이용하여 새로운 이미지로 만들어 new_img 변수에 저장합니다. ▼이렇게 새로 만든 이미지를 확인하겠습니다. 원본 이미지의 고양이들과 차이가 전~혀 없.. 더보기
[PYTHON 3] Tutorials 42. Getting Individual RGB Channel (RGB 채널 분리하기) 컴퓨터에 저장된 95% 아니, 많게는 99% 이상의 이미지들은 RGB(RED, GREEN, BLUE) 의 조합에 의해 구성된 픽셀(pixel)들입니다. 이번에는 사진에서 각각의 RGB 모드를 따로 분리를 해 보도록 하겠습니다. 사진 편집 프로그램을 다뤄본 사용자라면 각종 효과를 적용시켜 본 경험이 있을텐데요. 이 채널 분리도 그와 유사한 형태로 적용이 가능합니다. 각각의 RGB 를 얼마나 적용하느냐에 따라 사진의 색감이 달라지게 되니까요. 아래는 New York 의 Time Square 의 모습입니다. 원본 이미지.▼ 이미지 처리 모듈인 '필로우'를 불러옵니다.▼ 원본 이미지를 열어 new_york 변수에 저장을 합니다. 그리고 해당 이미지의 모드를 확인하니 RGB 라고 친절히 알려줍니다.▼ 이렇게 알게.. 더보기
[PYTHON 3] Tutorials 41. Combine Images Together (이미지 병합하기 like watermark(워터마크)) 이번시간에는 파이썬을 이용해서 워터마크를 만들어 보려고 합니다. 이를 위해서는 서로 다른 두 이미지를 병합하는 과정을 다루어야 합니다. 워터마크 만들기 ( Make a water mark using python) 원본 이미지 1 - 잡스 횽아 ㅠ_ㅠ.▼ 워터 마크로 사용할 원본 이미지 2 - 스티브 잡스가 작고할 당시에 회자된 애플 이미지▼ 이미지 처리를 위한 모듈인 필로우를 불러옵니다.▼ 각각의 이미지를 열어주어 변수 steve, apple 에 저장을 합니다.▼ 워터마크로 사용할 이미지의 크기를 확인해 봅니다.▼ 위의 워터마크로 사용할 이미지의 크기를 확인 한 이유는, 만약 이미지의 크기가 맞지 않으면 오류가 발생하기 때문입니다. 향후에는 이미지의 크기와 상관없이 동적으로 적용할 수 있는 방법을 알아볼.. 더보기
[PYTHON 3] Tutorials 40. Cropping Images (이미지 잘라내기) 이전 시간에는 파이썬에서 이미지를 불러오는 모듈인 "Pillow"에 대해 알아보았습니다. 이번에는 이렇게 불러들인 이미지를 기호에 맞게 처리하는 방법 중 하나인 image crop 에 대해 알아보려고 합니다. 앞에서 사용한 코드를 그대로 재활용하겠습니다.▼ 사용할 이미지에서 표시된 부분만 cropping(잘라내기) 후 새로운 파일로 저장을 하려고 합니다. 여기에서 사용할 위치값이 존재하는데, 4개의 인자를 필요로 합니다. (가로 시작점, 세로 시작점, 가로 범위, 세로 범위) 이런 순서로 값을 넣어주어야 합니다.▼ 위에서 언급한 위치값을 area 변수에 저장을 하겠습니다. 가로 시작점:100, 세로 시작점:100, 가로 범위: 1000, 세로 범위:1200 의 값을 area 에 저장을 합니다.▼ 원본 이.. 더보기
[PYTHON 3] Tutorials 38. Min, Max and Sorting Dictionaries (딕셔너리의 최솟값, 최댓값 구하기 및 정렬하기) 이번 시간에는 딕셔너리(key, value값을 가지는 형태)의 최솟값, 최댓값을 구하여 보겠습니다. 그리고 이의 정렬도 함께 살펴보려 합니다. 튜토리얼 초반부에 다룬 딕셔너리는 key, value값을 가지고 있습니다. 영어 사전을 떠올려보시면 이해하기 쉬울 것입니다. 찾고자 하는 단어가 key에 해당이되고, 해당 단어의 뜻이 value에 해당합니다. 어떤 key값에 대응하는 value값들을 가지고 있는 딕셔너리가 있다고 가정을 해 보겠습니다. 이 딕셔너리에는 많은 양의 데이터가 중구난방으로 존재하고 있습니다. 이런 무작위 데이터를 잘 정리하려고 하는데, 일반적으로 오름차순, 내림차순 등의 방식으로 정렬을 합니다. 그러나 문제는 파이썬에서 딕셔너리는 자체적으로 정렬을 할 수가 없습니다. 그럼 어떻게 해야 .. 더보기
[PYTHON 3] Tutorials 37. Lambda 이번 시간에는 Lambda 에 대해 알아보려고 합니다. 프로그래밍 언어를 조금이라도 다뤄본 사용자라면 친숙한 어휘일텐데, 그렇지 못한 초심자들이라면 상당히 낯선 단어이기도 합니다. Lambda(한글식 호명은 '람다'라고 읽으면 됩니다.)는 일종의 작은 함수 정도로 생각하시면 됩니다. 그 동안 어떤 역할을 수행하게 하는 함수를 정의하고 인자를 전달하고 함수를 호출하고 하여 코딩을 하여왔습니다. 그러나 Lambda는 함수와 달리 함수명이 없습니다. 그리고 여러번 호출해서 사용하지 않고 1회성으로 잠깐 사용하는 속성(단기) 함수라고 볼 수도 있습니다. 함수명만 없을 뿐이지, 전달되는 인자는 여전히 표기하여야 하는 공통점이 있습니다. 간단하게 기본적인 'Lambda'를 알아보겠습니다. 기본적인 Lambda의 표.. 더보기
[PYTHON 3] Tutorials 35. Unpack List or Tuples ( 리스트, 튜플 풀기) 이번 시간에는 파이썬에서 리스트, 튜플을 다룰때 언패킹(풀기)을 어떻게 주로 이용하는지를 알아보고자 합니다. 일상 생활에서 우리가 마트에 장을 보러 간다고 가정을 해 보겠습니다. 영수증에 구매 목록이 쭉 나열이 될텐데, 이를 파이썬 프로그램으로 구매목록을 나열한다고 가정해 볼까요. 그럼 어떻게 처리를 하는게 좋을까요? 구매목록이 적게는 1개, 많게는 수십, 수백가지에 이를것입니다. 이럴경우 사용하는게 리스트, 또는 튜플을 이용합니다. 아이템을 하나 구매했는데, 구매 날짜, 품목, 가격. 이렇게 item이라고 하는 변수에 저장을 하게 하였습니다. 단순히 어떤것이 들어있는지 확인해 보았습니다.▼ item 이라는 변수의 포지션값을 넣어서 각각의 위치에 해당하는 값을 표기하게 하였습니다. 결과를 보니, 순서대로.. 더보기
[PYTHON 3] Tutorials 34. Make words counters - 3 ( words frequency counter 만들기) 이번 시간에는 이전 시간에서 만든 Word Counter를 활용해서 Frequency Counter(빈도수 카운터) 만들어 보도록 하겠습니다. 어떤 문서를 작성할시에 특정 단어가 얼마나 자주 사용되었는지 확인하거나, 어떤 사이트에서 가장 빈도수가 높게 올라오는 어휘가 어떤 것인지 한눈에 확인할 수도 있으며, 혹은 특정(장소, 시간, 위치, 카테고리 등등)한 매개체에서 동일 단어의 사용 빈도를 추적할 때도 활용할 수 있는 Frequency Counter 코딩을 시작해 보겠습니다. 이전 시간까지 작성한 코드입니다.▼ 확인을 위해 삽입한 print(word)를 comment 처리 하였습니다. 이전 시간에 완성한 특수문자가 제거된 온전한 단어들을 전달받는 딕셔너리 제작 함수를 호출하게 하였습니다.▼ 상기 그림에.. 더보기
[PYTHON 3] Tutorials 33. Make words counters - 2 ( words counter 만들기) 이전까지는 웹페이지에서 특정 부분을 크롤링하여 단어들을 추출하였습니다. 그러나 여기에는 특수문자 등 원하지 않는 부분도 포함되어 있었습니다. 이번 시간에는 앞에서 얻은 자료에서 원치않는 부분을 제거하는 코딩을 하도록 하겠습니다. 앞 장에서 다룬 코드는 아래와 같습니다.▼ 상기 코드에서 우선 확인을 위해 삽입한 print(each_word)를 삭제하도록 하겠습니다.▼ 또 다른 함수를 정의할 건데 start(url) 함수 내에서 호출 하도록 할 예정입니다. 그래서 아래 코드에서 처럼 clean_up_list(word_list) 문구를 삽입하였습니다.▼ clean_up_list(word_list) 함수를 정의하겠습니다.▼ start(url) 함수와 마찬가지로 원하지 않는 데이터를 뺸 자료를 담을 그릇(리스트).. 더보기
[PYTHON 3] Tutorials 32. Make words counters - 1 ( words counter 만들기) 이번 시간에는 'words counter'를 만들어 보겠습니다. 말 그대로 얼마나 많은 단어들이 있는지 카운팅 하는 프로그램입니다. 일반적으로 'words counter'는 문서 작업을 할 때에 얼마나 많은 글자가 사용되어는지 확인하는 용도로 많이 활용되곤 합니다. 대신 이번에는 특정 웹 페이지에서 어떤 단어가 얼마나 많이(빈도수) 사용되어졌는지를 알아보는 프로그램을 만들어보겠습니다. 이는 빅데이터, search engine(검색엔진) 분야 등 다양한 분야에 광범위하게 사용이 되는 개념이기도 합니다. 시작을 하겠습니다. 우선 코딩에 필요한 모듈들을 import 하겠습니다. 이번에는 웹페이지 관련 모듈인 requests, HTML 코드를 예쁘게(?), 단정하게 보여주는 BeautifulSoup, 카운팅 관.. 더보기
[PYTHON 3] Tutorials 31. Threading - 파이썬의 쓰레딩 이번 시간에는 파이썬에서 사용하는 Threading(쓰레딩)에 대해 알아보겠습니다. 프로그램을 코딩을 하고 컴파일을 할 때에는 Top to Bottom, Left to Right. 즉, 위에서 왼쪽에서 순서대로 컴파일을 하게 되어 있다. 한번에 하나씩 컴파일을 한다는 말이된다. 그런데 어떤 프로그램들은 굳이 이렇게 하나씩 컴파일을 할 필요가 없는 프로그램도 있다. 하나의 프로그램이 컴파일링이 끝날때 까지 기다리지 않고 다른 코드의 컴파일에 들어가도 전혀 문제가 되지 않을 경우에 Thread를 사용하여 마치 처음부터 다른 프로그램을 동시에 구동하는 것 마냥 컴파일을 할 수 있다. 말보다는 예제가 정답이다. 우선 thread를 사용하기 위해 python 에서 threading 모듈을 불러옵니다. ▼ 메신저를.. 더보기
[PYTHON 3] Tutorials 30. Multiple Inheritance - 파이썬의 클래스 다중 상속 이번 시간에는 앞 시간에서 다룬 클래스의 상속을 확장한 다중 상속에 대해 알아보려고 합니다. 하나의 클래스가 2개 이상의 서로다른 역할을 하는 클래스를 상속받아 그 기능을 온전히 수행하게끔 하는데 그 목적이 있고, 그러면 그 활용성 또한 증대될 것이기 때문입니다. 롤플레잉 게임을 한다고 가정하고, 그 중 한 캐릭터를 Archer(궁수)라고 할 때, 이 캐릭에 해당하는 클래스를 정의하였습니다. 그 중 움직임을 담당하는 함수를 move 라고 하고 정의하였습니다.▼ 게임내 아이템들이 많을텐데, 어떤 아이템을 획득 했을시에 레벨업을 가정하고 Item 이라는 클래스를 정의하였습니다. 그 중 아이템 획득에 관한 함수 eat_item 을 정의하였습니다.▼ 위의 두 개의 서로 다른 클래스를 상속 받게 할 경우에는 아래.. 더보기
[PYTHON 3] Tutorials 29. Inheritance - 파이썬의 클래스 상속 안녕하세요. 이번 시간에는 파이썬에서 가장 중요한 것 중 하나인 클래스의 상속에 대해서 알아보고자 합니다. 지난 시간까지 클래스가 어떤 것이며, 어떻게 사용하는지, 왜 사용하는지 등등에 대해서 간략히 소개하였습니다. 이번에는 이 클래스를 보다 실용적으로 사용하기 위해 기존의 만들어진 클래스를 확장하는 개념이라고 이해하시면 좋을것 같습니다.상속, 말 그대로 부모로 부터 물려받는것을 의미합니다. 다수의 기능을 하는 함수를 한데 묶어 하나의 클래스를 만들어 두었는데, 이 클래스가 가지고 있는 모든 기능을 그대로 가져오고, 거기에 더해 기능을 더 첨가하여 더 나은 클래스를 만들어 사용할 때 상속이라는 개념이 유용할 것입니다. 말 보다는 예제를 통해 알아 보도록 하겠습니다.클래스 이름을 'Parent'로 하는 클.. 더보기
[PYTHON 3] Tutorials 28. Init - 초기화 이번 시간에는 지난 시간에 다룬 클래스에서 초기화(initialization)에 대해 알아보고자 합니다. 파이썬에서 초기화란 클래스를 만들고, 객체가 클래스의 함수(메소드)에 접근을 할 때 아무런 함수(메소드)를 실행하지 않아도 처음부터 객체 생성과 동시에 실행되는 값들을 의미 합니다. 가령, 사람으로 치자면 처음부터 타고 나는것들이 해당이 되겠는데, 머리, 몸, 다리, 팔 등등... 이는 누구나 가지고 태어나듯이 객체가 생성됨과 동시에 가지고 있게 되는 것들을 일컬어 초기화 혹은 __init__ 으로 명명합니다. 역시 말보다는 예제를 통해서 보는게 훨씬 이해가 잘 되겠죠.. 시작해 보겠습니다. 사람(Person)이라는 클래스를 정의해 보겠습니다.▼ 사람의 초기값을 설정해주기 위해 아래와 같이 __ini.. 더보기
[PYTHON 3] Tutorials 27. Classes and Objects - 클래스, 객체 이번 시간에는 요즘 사용하는 프로그래밍 언어의 중심인 클래스와 객체에 대해 알아보고자 합니다. 현재 시장에서 사용하는 대부분의 언어가 객체 지향 프로그램(OOP: Objects Oriented program)이라고 해도 과언이 아닙니다. 물론 전부라고는 할 수 없으나 많은 언어에서 객체화를 지향하는 이유는 그만한 장점을 지니고 있기 떄문입니다. 앞서 다룬 함수 파트에서, 함수를 사용하는 이유 중 하나가 재사용성을 높이기 위해서라고 했습니다. 객체도 마찬가지입니다. 함수 + 함수 + 함수 를 하나의 클래스로 묶어놓고 이를 별개의 객체로 불러와 사용하면 코드를 수십, 수백, 수천 번 재사용할 수 있기 때문입니다. 잘 이해가 잘 안되신다면 아래의 코드를 예로 설명을 드리면 조금이나마 이해하는데 도움이 되리라 .. 더보기
[PYTHON 3] Tutorials 26. Exceptions - 예외처리 안녕하세요. 이번 시간에는 파이썬에서 발생할 수 있는 오류를 어떻게 처리하는지에 대한 것을 알아보려고 합니다. 프로그램을 만들다보면 이런 저런 오류로 골머리를 앓는 경우가 빈번한데, 이러한 오류, 에러를 어떻게 잘 핸들링 하느냐도 코딩 실력 향상에 크게 도움이 됩니다. 다행히 파이썬에서는 어떤 오류가 발생하면 여타 언어에 비해 왜, 어디서 오류가 발생하는지가 비교적 상세히 기술이 됩니다. 이렇게 친절히(!) 알려주는 문구들이 무슨 의미인지 알아야 할 것이며, 이를 어떻게 해결하는지 혹은 우회하는지를 살~짝 맛보기 해 보겠습니다. 그럼 시작하겠습니다. 아래와 같이 어떤 숫자를 받아들여서 단순 출력하는 프로그램을 만들어 봤습니다. 그런데 에러가 발생을 했네요. 어떤 오류인지 확인을 해보니 'ValueErro.. 더보기
[PYTHON 3] Tutorials 25. 웹 크롤러(like Google) 만들기 2 - How to build a web crawler 안녕하세요. 지난 시간에 이어 웹 크롤러 만들기 2번째 시간입니다. 지난 시간에는 BeautifulSoup 를 이용해서 특정 사이트의 글 목록 리스트에서 URL, 제목을 파이썬으로 가지고 오는 방법에 대해 알아 보았습니다. 이번에는 그 연장선상으로 URL, 제목에 해당하는 글의 본문 내용을 가지고 오게 만들어 보겠습니다. 시작하겠습니다. 앞 시간의 코드에서 각 글의 본문 내용을 확인할 수 있도록 하는 함수 get_single_article(item_url) 을 만들어 주었습니다. 물론, 함수명은 원하는 이름으로 정하여도 무방합니다.▼ 앞서 만든 코드에서 지금부터 만들어 줄 함수가 들어가는 위치에서 호출할 수 있도록 함수 호출 부분을 삽입합니다. page += 1 위에 함수 호출 코드를 넣어 주었습니다. .. 더보기
[PYTHON 3] Tutorials 24. 웹 크롤러(like Google) 만들기 1 - How to build a web crawler 안녕하세요. 몇일동안 본업(?)에 매진하느라 소홀했던 튜토리얼을 다시 작성하려 합니다. 간혹 메일로 문의를 주시는 분이 계신데, (메일은 어떻게 아셨지 -_-a) 그냥 여기에 댓글을 다셔도 가능하면 답을 달아 드립니다. 긴급한(!) 일이 아니라면 메일은 삼가해 주셨으면 합니다^^;. 서두가 길었네요. 시작해 보겠습니다. 이번 시간에는 인터넷 상에 있는 자료(데이터: 글 + 이미지 + 파일 등등) 들을 파이썬을 이용해서 긁어오는 것을 하겠습니다. 우리가 잘 알고 있는 구글의 검색 시스템도 시시각각 인터넷상에 올라오는 글들을 크롤러(로봇)가 링크를 타고 타고해서 DB(데이터 베이스)에 잘 저장을 해 둔것을 사용자들이 찾는 시스템입니다. 여타 검색엔진과 다르게 구글이 크게 성장할 수 있었던 요인 중 하나는 사.. 더보기
[PYTHON 3] Tutorials 23. Downloading Files from the web - 파일 다운로드 하기 using 파이썬 안녕하세요. 이번 시간에는 지난 시간의 이미지(사진) 다운받기에 이어 파일을 다운받아 보도록 하겠습니다. 이미지 다운과는 약간 다르지만, 크게 어렵지는 않으니 느긋하게 읽어보시면 쉽게 이해할 수 있을 겁니다. 그럼 시작하겠습니다. 주식 분석을 위한 시세 자료를 다운 받기 할 예정입니다. 이제까지는 import 뒤에 불러올 모듈명을 바로 적어 주었습니다. 그런데 아래 그림은 앞에 from 을 적어주고 import 뒤 모듈명을 적어 주었네요. 이는 추후에 클래스를 다룰때 보다 자세히 설명드려야 할 사항이므로 지금은 그냥 넘어가셔도 무방합니다. ▼ 주식 관련 CSV(Comma Separated Value)파일을 찾아보았는데, 야후 파이낸스에 올라와 있더군요. 그래서 'finance.yahoo.com'으로 접속.. 더보기
[PYTHON 3] Tutorials 22. How to read and write Files - 파이썬에서 파일 읽고 쓰기 이번 시간에는 프로그래밍을 할 때 가장 중요한 요소 중 한가지인 파일 읽고 쓰기에 대해 알아보려고 합니다. 어떤 프로그램을 잘 만들었다고 하더라도 1회성으로 그 자료가 없어진다면 별 의미없는 작업이 될 것입니다. 데이터로 저장을 하고 이렇게 저장되거나 DB로 만들어 둔 자료들을 가지고 제2, 제3의 유용한 자료로 활욜할 수 있게 된다면 그제서야 자료로서 유용해질 것이기 때문입니다. 보통 이렇게 제2, 제3의 데이터로 활욜할 수 있는 분야들을 요즘에는 메타 데이터, 또는 빅데이터라고 하는 분야에 활용이 됩니다. 이 모든 사항들이 데이터가 기록이 이루어질 때 비로소 가능합니다. 그러려면 저장을 해야하는데 그러기 위한 단계가 파일의 형태로 남기는 것이겠죠. 자 그럼 시작을 해 볼까요? fw = open('te.. 더보기
[PYTHON 3] Tutorials 21. Download images from the web - 이미지(사진) 다운로드 하기 with 파이썬 안녕하세요. 이번 시간에는 앞시간에서 다룬 모듈을 사용해서 인터넷(웹) 상에서 이미지(사진)을 다운로드 해 보겠습니다. 그 까지것 직접 다운하면 되지 않냐? 할 수도 있겠으나, 우리는 호모 사피엔스( 생각하는 인간 ) 이지 않습니까! 번거로운 일은 컴퓨터가 알아서 하게 시키자는 취지입니다. 당연히 다운로드 해야할 양이 많아지면 귀차니즘이 발동 되니, 그 일을 컴퓨터에게 양보(?) 하는게 현명할 것입니다. 각설하고 시작하겠습니다. 앞에서 다룬 random 모듈을 불러들입니다. 파이썬 내장 모듈(함수)인 urllib를 불러들이는데, 그 중 request를 호출하였습니다. 우리가 웹브라우저(chrome, firefox, safari, internet explore, opera etc.)를 이용하여 인터넷을 서.. 더보기
[PYTHON 3] Tutorials 20. Modules(모듈화) 안녕하세요. 이번 시간에는 모듈(Modules)에 대해 알아보고자 합니다. 프로그래밍을 하다 보면 함수(Function)들을 사용하고 또 사용하는, 일명 재사용성이 증대되는데, 이럴때 자주 사용하는 함수들을 모아두고 불러와서 사용하면 훨씬 수월하게 프로그램을 작성할 수 있게 되겠죠? 시간도 절약하고 코드 재활용도 할 수 있게되는 것이죠. 이렇듯 자주 사용하는 함수들을 하나의 파일 형태로 모아 두는데 이를 모듈이라고 합니다. 모듈은 이미 누군가가 만들어 놓은 것도 있고 본인이 직접 만들어서 사용할 수도 있습니다. 이미 누군가 만들어 놓은것은 프로그램 상단에 'import'라는 단어를 넣고 불러오고자 하는 모듈명을 적어주면 됩니다. 만들어 놓은 모듈이 없다면 직접 만들어서 불러와서 사용할 수도 있습니다. 자.. 더보기
[PYTHON 3] Tutorials 19. Dictionary 안녕하세요. 이번 시간에는 파이썬에서 다루는 'Dictionary'에 대해 알아보고자 합니다. 딕션너리: 사전. 을 뜻하죠. 쉽게 이해하고 있듯이, 사전을 찾으면 단어:뜻 이렇게 이루어져 있습니다. 이 개념과 동일합니다. 어떤 단어를 찾았는데 그 안에 가지고 있는 의미, 뜻, 내용물이 뭔지 알려주게끔 이루어진 규칙을 말합니다. 이를 프로그래밍에서는 Key, Value 라고 각각 칭합니다. 단어: Key, 뜻: Value 라고 이해하시면 됩니다. 자 그럼 예제를 통해 자세히 알아보겠습니다. 친구라는 변수 안에 친구 이름과 특징을 딕셔너리({})로 넣어 두었습니다. 딕셔너리는 Curly Bracket {} 안에 세미콜론(:) 왼쪽에는 key 값을 오른쪽에는 value 값을 넣어주는게 원칙입니다. 위 코드에서.. 더보기
[PYTHON 3] Tutorials 18. Sets(중복제거) 안녕하세요. 이번 시간에는 Sets 에 대해서 알아보려고 합니다. Sets는 여러개의 리스트를 담는 일종의 그릇이라고 생각하면 되는데, 중복을 걸러내주는 역할을 합니다. 아래 예제로 다루겠지만, 마트에 가서 쇼핑을 해야 하는데 사야할 리스트가 있을겁니다. 그런데 품목이 여러개일 경우에 샀던 것을 또 살 경우가 있을 수 있습니다. 이럴 경우, 이미 리스트에 있는 것은 추가가 되지 않게 할 수 있는 프로그램을 만들 수 있어 편리하겠죠? 물론 다른 형태로 중복을 피할 수 있는 경우는 다반사일겁니다. 이럴경우에 사용하는 것이 파이썬에는 Sets 라고 합니다. 그럼 시작해 볼까요? 우선 사야할 쇼핑리스트 변수에 품목들을 쭈~욱 적습니다. 이 때, Curly Braket {} 으로 해야 합니다. 규칙이고 약속이니 .. 더보기
[PYTHON 3] Tutorials 17. Unpacking Arguments 이번 시간에는 Unpacking Arguments에 대해 알아보도록 하겠습니다. Unpacking 은 말 그대로 꾸러미 같은것을 푼다는 의미입니다. 즉, Arguments 꾸러미를 푸는 것이 어떤것인지 알아보려고 합니다. 자 그럼 시작해 보겠습니다. 간단히 임의로 몇살까지 살 수 있을지에 관한 계산을 할 수 있는 함수를 정의해 보았습니다. 물론, 허구성이며 단순 계산식이니 신빙성은 없는 산술식이라고 하겠습니다. 위의 그림처럼 3개의 parameters를 받는 health_calculator라는 함수를 정의 하였습니다. 나이, 하루에 먹는 사과 개수, 하루에 피는 담배는 얼마인지. 이런걸로만 만든 계산기입니다. 계산을 하고 결과를 answer에 저장하고 출력하게끔 하였습니다. 그리고 'brown'이라고 하.. 더보기