apsw, aspell-python, assimulo, astropy, Atom, autopy, Babel, backports, basemap, Bazaar, bcolz, bigfloat, bioformats, biopython, bio_formats, bitarray, BLAZE, blender-mathutils, blist, blosc, bokeh, boost.python, bottleneck, bsdiff4, carray, cartopy, casuarius, cdecimal, cellcognition, cellprofiler, ceodbc, certifi, cffi, cgal-python, cgkit, Cheetah, cld, conda, Console, Coverage, curses, cvxopt, cx_freeze, cython, cytoolz, delny, dipy, docutils, dpmix, dynd, EcOS, enaml, epydoc, ETS, fastcluster, faulthandler, ffnet, fiona, fipy, fonttools, friture, gdal, gevent, gmpy, greenlet, guiqwt, h5py, holopy, htseq, ilastik, iminuit, imread, intbitset, iocbio, IPython, iris, javabridge, jcc, jinja2, jpype, jsonlib, kivy, kiwisolver, kwant, la, liblas, liblinear, libpython, libsbml, libsvm, libtfr, libxml-python, line_profiler, llist, llvmlite, llvmpy, lp_solve, lsqfit, lxml, mahotas, MAKO, marisa-trie, markupsafe, matplotlib, MDP, Mercurial, meshpy, milk, minepy, mlpy, mmlib, mmseg, mmtk, mod_wsgi, mpi4py, msgpack, mxbase, mysql-python, mysqlclient, natgrid, netcdf4, networkx, nibabel, nipy, nipype, nitime, nlopt, nltk, nmoldyn, Noise, nose, numba, Numeric, numexpr, numpy, numscons, ODE, openbabel, opencv, openexr, openglcontext, openimageio, ORANGE, oursql, pandas, patsy, pgmagick, pillow, pip, Planar, Polygon, polymode, psutil, psycopg, Pulp, py-fcm, py-postgresql, py2exe, pyalembic, pyamf, pyamg, pyaudio, pybluez, pybox2d, pycairo, pycares, pycifrw, pycluster, pycogent, pycosat, pycparser, pycuda, pycurl, pydbg, pydde, pyeda, pyephem, pyexiv2, pyfftw, pyfftw3, pyfits, pyfltk, pyfmi, pygame, pygit2, pyglet, pygments, pygraphviz, pygtk, pyhdf, pyhook, pyicu, pyisapie, pylibdeconv, pylibtiff, pylzma, pymatlab, pymc, pymca, pymedia, pymex, pyminuit, pymix, pymol, pymongo, pymssql, pymunk, pymutt, pymvpa, pynifti, pyodbc, pyopencl, pyopengl, pyparsing, pyproj, pyqt4, pyqwt, pyreadline, pyropes, pyrxp, pySerial, pysfml, pyshp, pyside, pysparse, pyspharm, pysqlite, pystemmer, pytables, python-cjson, python-dateutil, python-igraph, python-ldap, python-levenshtein, python-lz4, python-lzo, python-snappy, python-sundials, pythonmagick, pythonnet, pytst, pytz, pyusb-ftdi, pyviennacl, pyvisa, pyvrml97, pywavelets, pywcs, pywin32, pyxml, pyyaml, pyzmq, qimage2ndarray, quantlib, quickfix, qutip, rasterio, re2, Regex, reportlab, requests, rpy2, rtmidi-python, rtree, scientificpython, scikit-bio, scikit-image, scikit-learn, scikits.ann, scikits.audiolab, scikits.delaunay, scikits.hydroclimpy, scikits.odes, scikits.samplerate, scikits.scattpy, scikits.timeseries, scikits.umfpack, scikits.vectorplot, scipy, scipy-cluster, scipy-stack, scitools, scons, sendkeys, setuptools, sfepy, shapely, silvercity, simpleitk, simplejson, Six, slycot, smc.freeimage, sparsesvd, sphinx, Spyder, SQLAlchemy, statsmodels, steps, sympy, ta-lib, theano, thrift, tinyarray, Tornado, trfit, twainmodule, Twisted, ujson, umysql, veusz, videocapture, vigra, virtualenv, visionegg, vispy, visvis, vitables, vlfd, vpython, vtk, wxPython, yappi, YT, zodb3, zope.interface

요즘 파이썬을 주로 사용하면서 다양한 모듈들을 찾는 재미에 푹 빠졌는데요~

 

윈도우를 주로 사용하다 보니 pip 로 인스톨이 안되는 경우가 종종 있더군요.

 

이런 경우에는 버츄얼 박스에서 리눅스를 설치해서 사용해도 되긴 하는데~

 

찾아보니 아래 주소에 다양한 윈도우용 파이썬 모듈들이 있더군요.

 

http://www.lfd.uci.edu/~gohlke/pythonlibs/

 

위 주소에서 제공하는 모듈들은 다음과 같습니다.

 

pycosat, virtualenv, pip, setuptools, requests, libsvm, liblinear, cytoolz, dynd, gevent, bokeh, blaze, pygit2, numba, llvmlite, iris, pillow, mercurial, netcdf4, rpy2, biopython, reportlab, scipy, yt, nibabel, backports, pandas, ets, pyalembic, shapely, scikit-bio, pycairo, spyder, statsmodels, python-dateutil, pytz, sfepy, apsw, python-igraph, pyqwt, pylzma, openimageio, pymssql, pyvisa, sympy, lxml, lsqfit, thrift, pyicu, pyside, guiqwt, pyqt4, regex, gdal, cellcognition, vigra, h5py, pytables, pycurl, ipython, pygments, mahotas, pyspharm, imread, scons, kiwisolver, enaml, atom, faulthandler, conda, bigfloat, yappi, visvis, simplejson, line_profiler, rasterio, fiona, bioformats, javabridge, mysqlclient, numpy, pyzmq, pyfftw, minepy, mlpy, matplotlib, py2exe, veusz, greenlet, cython, sqlalchemy, bcolz, psutil, vlfd, pyparsing, pymc, pywin32, friture, pymol, orange, python-ldap, gmpy, pymca, blender-mathutils, jcc, scientificpython, opencv, kwant, pymunk, pulp, jpype, intbitset, astropy, qutip, networkx, twisted, pylibtiff, quickfix, six, nltk, tornado, numexpr, rtree, polygon, pythonnet, pycares, scikit-learn, psycopg, sphinx, vispy, scipy-stack, nose, libpython, pyxml, cvxopt, pycuda, basemap, qimage2ndarray, iminuit, pgmagick, milk, llvmpy, pymongo, nlopt, libsbml, pysqlite, pyfits, patsy, certifi, mxbase, python-lz4, blosc, meshpy, docutils, cffi, scikit-image, lp_solve, pyeda, pystemmer, pyopengl, pyrxp, pymvpa, cartopy, natgrid, python-levenshtein, ecos, msgpack, pyfmi, assimulo, nitime, mako, jinja2, pyephem, pyopencl, mod_wsgi, cx_freeze, pyviennacl, markupsafe, vitables, mpi4py, quantlib, pyaudio, steps, mmtk, pyminuit, smc.freeimage, vtk, pyhdf, pyyaml, pycifrw, pygame, videocapture, pythonmagick, pyvrml97, openglcontext, zope.interface, blist, aspell-python, ode, pycluster, cdecimal, noise, scikits.odes, scikits.umfpack, scikits.ann, scikits.vectorplot, curses, mysql-python, oursql, libtfr, htseq, marisa-trie, ffnet, polymode, slycot, ta-lib, pymutt, bsdiff4, pyfltk, pyisapie, pycparser, pybluez, openbabel, pysfml, pywavelets, pyserial, ujson, rtmidi-python, kivy, nipype, pydde, llist, pymix, dipy, bio_formats, bottleneck, fastcluster, la, cgkit, planar, ceodbc, scipy-cluster, pyhook, pyproj, sparsesvd, simpleitk, casuarius, coverage, twainmodule, python-snappy, theano, boost.python, bitarray, pyodbc, fonttools, pylibdeconv, fipy, tinyarray, pyshp, carray, pysparse, nipy, bazaar, pygraphviz, babel, pyamg, umysql, scikits.samplerate, scikits.scattpy, scikits.hydroclimpy, scikits.delaunay, autopy, libxml-python, pyusb-ftdi, mmlib, cellprofiler, pyreadline, py-fcm, liblas, vpython, scikits.audiolab, py-postgresql, pyamf, holopy, pyropes, epydoc, cheetah, pywcs, python-sundials, openexr, dpmix, cld, mdp, pycogent, jsonlib, silvercity, console, python-cjson, pytst, sendkeys, pydbg, pyglet, python-lzo, delny, pyexiv2, ilastik, scitools, trfit, re2, cgal-python, pymedia, pyfftw3, pymex, pymatlab, zodb3, pygtk, numeric, nmoldyn, iocbio, wxpython, pybox2d, mmseg, pynifti, scikits.timeseries, numscons, visionegg

C/C++ 코드를 버전에 따라 다른 형식으로 작성해야 할 경우가 종종 있습니다.

 

예를 들어 어떤 경우에는 주석을 다 지우고 전달해야 하는 경우가 있는데~

 

이런 경우를 위해 파이썬으로 C/C++ 주석 지우는 코드를 만들어 봤습니다.

 

아래 코드에서 workingDir = "D:\TestFolder" 부분을 코드가 들어있는 최상위 폴더로 맞춰 주면 *.c, *.h 파일의 모든 주석을 지워줍니다.

 

C++ 코드 라면 AllFileList 부분에서 *.CPP 와 같은 확장자를 추가해 주면 됩니다.

 



아래 포스팅에서 Perl 과 Autohotkey 를 사용한 Ms Word 자동화에 대해 소개한 적이 있는데요.

 

http://iamaman.tistory.com/335


http://iamaman.tistory.com/458


오늘은 요즘 제가 종종 사용하는 python 을 사용한 ms word 자동화에 대해 간단히 소개하려 합니다.

 

뭐 다른 사람에게 소개한다는 측면보다는 제가 기억하기 위한 용도로 적어 놓는거니 그리 자세하지는 않습니다.

 

일단 python 에서 ms word 문서를 만들기 위해서는 아래 주소에서 pywin32 모듈을 설치해야 합니다.

 

http://sourceforge.net/projects/pywin32/files/pywin32/

 

다음으로 아래 주소의 예제들을 참조하여~

 

http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/

 

http://win32com.goermezer.de/content/view/173/192/

 

 

간단하게 python으로 코딩을 해보죠~

 

다음은 간단히 파일 저장하는 코드 입니다

 

import win32com.client

 

wordapp = win32com.client.Dispatch("Word.Application") # Create new Word Object

wordapp.Visible = 0 # Word Application should`t be visible

worddoc = wordapp.Documents.Add() # Create new Document Object

worddoc.PageSetup.Orientation = 1 # Make some Setup to the Document:

worddoc.PageSetup.LeftMargin = 20

worddoc.PageSetup.TopMargin = 20

worddoc.PageSetup.BottomMargin = 20

worddoc.PageSetup.RightMargin = 20

worddoc.Content.Font.Size = 11

worddoc.Content.Paragraphs.TabStops.Add (100)

worddoc.Content.Text = "Hello, I am a text!"

worddoc.Content.MoveEnd

worddoc.SaveAs("C:/test.docx")

worddoc.Close() # Close the Word Document (a save-Dialog pops up)

wordapp.Quit() # Close the Word Application

 

위 코드를 실행해 보면 C:\test.docx 에 다음과 같은 문서가 생성됨을 확인 할 수 있습니다.

 

 

아래는 MSDN 에 나와 있는 저장형식들 입니다.

 

http://msdn.microsoft.com/en-us/library/bb238158%28v=office.12%29.aspx

 

Openoffice automation 에 대한 글도 있어서 링크 합니다.

 

http://stackoverflow.com/questions/1035183/how-can-i-create-a-word-document-using-python

 

Ms Word 를 포함하여 다양한 예제가 나와 있는 주소

 

http://win32com.goermezer.de/content/category/7/86/192/

 

이전 포스팅에서 C++, MATLAB 을 사용하여 Cartesian Product 를 구하는 방법에 대해 알아본 적이 있습니다.



2013/08/18 - [programming language/MATLAB] - MATLAB 모든 경우의 수 뽑기 Cartesian Product


2014/03/01 - [programming language/C/C++] - C++ Cartesian Product


2013/08/18 - [programming language/powershell] - Powershell 경우의 수 조합 다 구하기(Cartesian Product)


 

이번에는 python 에서 Cartesian Product 를 구하는 방법에 대해 확인해 보니 이전의 방법들 보다 훨씬 더 쉽더군요.

 

아래 주소에 그 방법이 나와 있었습니다.

 

http://stackoverflow.com/questions/9101101/python-cartesian-product

 

itertools.product() 함수를 사용하는 방식이며 Document 는 아래 주소에서 확인 할 수 있습니다.

 

https://docs.python.org/2/library/itertools.html#itertools.product

 


다음과 같은 결과가 나옵니다.

 

bad

baf

bed

bef

cad

caf

ced

cef


최근에 Python을 적극적으로 사용해 보면서 Python의 다양한 Package 들을 찾는 재미에 푹 빠져 있습니다.

 

이전 포스팅에서 Pyzo 에 대해 소개하면서 sympy 라는 package 가 들어있다고 얘기를 했었는데 sympy 라는 package 는 Computer Algebra System(CAS) package 입니다.


2014/12/03 - [programming language/Python] - Python Pyzo, IEP


 

Computer Algebra System (CAS) 란 우리가 흔히 알고 있는 Mathematica, MATLAB, SAGE 나 아래 포스팅에서 소개했던 MAXIMA, Geogebra 등에 들어 있는 기능입니다.

 


2014/08/28 - [수학] - MAXIMA CAS 를 사용한 수학 공부


2014/08/28 - [지오지브라] - 지오지브라(Geogebra) 정삼각형 두 개로 외접원 그리기


2013/10/28 - [컴퓨터일반] - 지오지브라(Geogebra)로 수학을 재미있게~, 함수의 교점 구하기


   

말 그대로 symbolic 으로 수학 계산을 하는 건데~

 

이런 기능이 python 에도 있더군요. 그런 기능을 하는 package 가 바로 sympy 입니다.

 

Sympy 의 공식 주소는 아래와 같으며~

http://www.sympy.org/

 

다음과 같이 pip 명령어로도 설치 가능합니다.

pip install sympy

 

혹시 pip 가 설치되어 있지 않은 분들은 아래 주소 참조하여 설치 하시길~

 

위 명령어로 설치를 하셨다면 ~ 다음과 같이 Symbolic 으로 수학 연산을 수행 할 수 있습니다.

 

Sympy 에서는 홈페이지에서 다음 그림과 같이 online shell 이라는 환경을 제공해 주더군요. 컴퓨터에 python 이나 sympy 가 설치되어 있지 않더라도 브라우저에서 실행 가능합니다.


http://live.sympy.org/


 

 

Sympy 의 매뉴얼은 아래 주소와 같은데~ 미적분이나 limit, solve 기능 등이 기본으로 되더군요.

 

http://docs.sympy.org/latest/tutorial/index.html

 

매뉴얼도 굉장히 잘 되 있어서 브라우져에서 각 설명 제목 부분의 Run~ 부분을 클릭하면 online shell 에서 해당 코드가 실행되서 굉장히 빨리 사용법을 읽힐 수 있을 것 같네요~

 

다양한 Python package 들 중에 Pyzo 라는 것을 발견 했습니다. 아래 포스팅에서 소개했던 spyder 와 비스므리한 package 같더군요.



2013/11/13 - [유틸] - 과학 분석에 사용되는 Python IDE Spyder


 

아래 공식 홈페이지의 소개를 보니 data-centric 프로그래밍을 위한 툴을 만드는 게 목표라 하는데~ IEP 라는 IDE 가 같이 들어 있어서 사용하기 좋더군요.

 

http://www.pyzo.org/

 

Pyzo 에는 아래 소개와 같이 다양한 packages 들이 같이 들어 있습니다. Numpy, scipy, matplotlib 와 같은 익숙한 package들도 있었지만 pandas, sympy, nose 와 같이 생소하지만 알아보고 싶은 package 들도 있더군요.

 

http://www.pyzo.org/packages.html#packages

 

저는 아래 포스팅에서 소개한 바와 같이 Eclipse 환경에서 Pydev 를 사용해서 코딩하곤 했는데~ 별다른 불편함 없이 잘 쓰고 있었습니다.

 

http://iamaman.tistory.com/1442

 

그런데 위 에서 소개한 Eclipse 환경에서는 에디터 환경에서 코드의 일부만 실행시키고 싶다거나 할 때는 그리 좋지 않더군요. 혹시 eclipse 에서 pydev 를 사용할 때 코드의 일부를 실행하는 방법이 따로 있다면 소개 좀……

 

코드의 일부만 실행한다는 것은 아래 MATLAB Editor 의 셀 기능과 같이 코드를 분리해서 실행하고 싶다는 것입니다.


2011/02/23 - [programming language/MATLAB] - Matlab Script coding tips, cell mode


 

Python 과 같이 인터프리터가 있는 환경에서는 코드를 분리해서 실행시키고 하는 과정들이 좋을 때가 있더군요.

 

이러한 기능들은 디버그를 한다거나 할 때 매우 편리합니다.

 

첫 줄에 소개한 Pyzo는 아래 주소에서 다운로드 가능합니다.

 

http://www.pyzo.org/downloads.html

 

아래 그림과 같이 각자의 OS 버전에 맞는 Pyzo 버전을 다운로드 합니다. 저는 현재 windows 64 비트라 pyzo_distro-2014a.win64.zip (64 bit zip) 를 다운로드 받았습니다. 다운로드 받은 Zip 파일을 압축해제 하고 pyzo.exe 를 실행하면 됩니다.

 

 

실행하면 다음과 같은 IEP IDE 가 뜨게 됩니다.


 

위에서 에디터 부분을 보면 ##으로 시작하는 줄들이 있는데~ 이게 바로 MATLAB 에서도 소개했던 cell 단위 입니다. IEP 에서 이 셀 단위로 실행 할 수 있습니다.

 

아래 그림에서 각 단위 실행에 대해 단축키들이 있는데 Return 은 Enter 키를 의미 합니다.




오늘은 간단하게 Python 기초중에 기초 중 중요한 부분인 배열의 인덱스를 나열하는 방법에 대해 알아보자.

 

뭐 파이썬 고수가 아니라 대부분이 기초적인 내용만 적게 되겠지만

 

암튼 이런 간단한것도 모르면 매우 불편한데 알면 별 것 아닌데도 무지 편하다.

 

다음과 같은 배열이 있을 때

 

A=[10,11,12,13]

 

위 A 라는 배열의 인덱스와 값을 표시하고 싶을 때 나는 보통 아래와 같이 했다.

 

ind= 0

 

for n in A:

print ind, n

n+=1

 

뭐 보면 알겠지만 위 코드는 그냥 파이썬을 하나도 몰라도 상시기 있는 사람이라면 아무나 생각 할 수 있는 코드이다.

 

그런데 보통 파이선에서는 위와 같은 식 보다는 아래와 같이 enumerate() 라는 함수를 사용한다고 한다.

 

위 코드는 다음과 같이 동일하게 표현 할 수 있다. enumerate()를 사용하니 매우 심플해 진다. 파이썬 며칠 사용하면서 느낀건… 인덴트 맞춰야 하는거 제외하고는 참 편하고 좋다.

 

for i, n in enumerate(A):

    print i, n

 

다음과 같이 동일한 결과가 나온다.

 

0 10

0 11

0 12

0 13


Python 을 이용하여 파일 관리를 할 때 Recursive 하게 탐색하는 방법에 대해 소개한다.

 

Recursive 하게 파일 탐색을 하기 위해서는 os.walk 와 fnmatch.filter 를 사용한다.

 

내가 사용하는 코드들은 아래와 같다.

 

하위의 해당하는 파일들을 다 지고 싶다면 AllFileDelete() 함수를 하위의 모든 관련 파일들을 탐색하고 싶다면 AllFileList() 함수를 사용한다.

 

코드 아래 부분의 main 을 보면 사용방법을 확인 할 수 있을 것이다. 지우고자 하는 파일이 들어있는 최상위 폴더와 지우고자하는 파일의 확장자들을 죽 나열 하면 된다.

 

아래 코드에서는 C:\temp 폴더아래 있는 zip 파일과 txt 파일을 다 찾는 예이다.



Python 사용시 dictionary 안에 dictionary 를 계속 해서 추가하고 싶은 경우가 있습니다.

 

마치 우리가 사용하는 탐색기의 폴더 트리 구조와 같이 말이죠 .

 

Python에는 collections 이라는 모듈에서 deque 를 비롯하여 다양한 데이터 타입을 제공하는데 이중에 defaultdict 이라는 타입을 제공하고 있습니다.

 

이를 활용하면 위에 설명한 Tree 구조도 쉽게 만들 수 있습니다.

 

Tree() 구조에 대해서는 아래 주소에서 소개합니다.

 

https://gist.github.com/hrldcpr/2012250

 

위 주소에서 소개를 하므로 사용법에 대해서는 간단히 예를 들어보죠.

 

위 주소에서는 json.dumps 를 사용하여 사용하는 데이터 타입에 대해 console 에 나타냈는데, for 문을 통해서도 각 값들에 반복적으로 접근 할 수 있습니다.

 

위 코드를 실행해보면 아래와 같은 결과가 나옵니다.

 

{"harold": {"username": "hrldcpr"}, "handler": {"username": "matthandlersux"}}

harold username hrldcpr

handler username matthandlersux




Eclipse 를 사용하기 위해서는 일단 자바를 설치 해야 한다.

 

자바 jdk 는 아래 주소에서 설치 가능하다.

 

http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

다음으로 Eclipse 를 설치한다. 아래 주소에서 설치 가능하다.

 

https://www.eclipse.org/downloads/

 

Eclipse 는 다양한 버전이 있는데 pydev 를 추가적으로 설치해야 하므로 아무 버전이나 설치해도 될 것 같다.

 

나는 보통 아래 그림과 같이 Eclipse IDE for Java Developers, Eclipse IDE for Java EE Developers 둘 중에 하나를 설치하곤 한다.

 

자바만 정상적으로 설치되어 있다면 Eclipse 는 무난히 동작 한다.

 

Eclipse 를 실행하고 아래 그림과 같이 메뉴의 Help → Eclipse market place 에 들어가서

 

 

pydev 를 검색한다. Install 을 클릭하면 install 이 시작된다.

 

 

다음과 같이 confirm 을 누르고

 

다음으로 license 를 Accept 한다.

 

Certificate 도 확인을 눌러 준다.

 

설치되길 기다렸다가 Eclipse 가 재 시작하면 설치 완료 된다.

 

재시작하고 pydev 를 사용하기 위해서는 아래 그림과 같이 PyDev perspective 를 열어야 한다.

 

 

PyDev perspective 를 열고 나서 File → New 에 들어가보면 PyDev Project 메뉴가 나오는 것을 확인 할 수 있다.


아래 포스팅에서 Perl을 이용한 윈도우 Clipboard 접근 방법에 대해 설명 드린 적이 있는데요~

  


2014/03/12 - [programming language/Perl] - Perl Clipboard 사용하기



오늘은 Python에서 Clipboard 사용하는 방법에 대해 설명 드리려 합니다.

 

Python 에서 clipboard 에 접근을 할 수 있게 해주는 모듈은 pyperclip 입니다.

 

Pip search 를 해서 검색을 해보니 다음과 같이 A cross-platform clipboard module for Python. 이라고 나오네요~

 

CMD 창에서 간단하게 아래 명령어로 설치 할 수 있습니다.

 

Pip install pyperclip

 

Pip 가 설치 안된 분들은 아래 포스팅 참조해서 설치하시기 바랍니다.



2013/09/23 - [programming language/Python] - Windows 에서 Python easy_install, pip 설치


다음으로 간단하게 clipboard 의 내용을 다루는 예제를 한번 실행해보죠~

 

import pyperclip

pyperclip.setcb('The text to be copied to the clipboard.') # clipboard 에 내용 넣기

spam = pyperclip.getcb() # clipboard 에서 내용 가져오기

 

정말 간단하죠~ 그럼 운영체제의 clipboard 의 내용을 메모장에 붙여 넣어 볼까요~

 

Ctrl + V 를 눌러서 붙여 넣어보니 잘 되네요~






Python BeautifulSoup 를 사용한 로또 번호 불러오기에 대해 소개한다.

 

공식 홈페이지는 다음과 같으며~ 


http://www.crummy.com/software/BeautifulSoup/


BeautifulSoup 의 설치는 pip 를 사용한다. 최신 버전은 아래 명령어로 설치 가능하다.

 

pip install beautifulsoup4

 

pip 가 설치 방법에 대해서는 아래 주소 글 참조 바란다. 

2013/09/23 - [유틸] - Windows 에서 Python easy_install, pip 설치


설치가 다 완료 되었으면 아래와 같이 코딩하고 실행 시킨다. 

from bs4 import BeautifulSoup

import urllib2

 

url='http://www.nlotto.co.kr/common.do?method=main'

 

page=urllib2.urlopen(url)

soup = BeautifulSoup(page.read())

 

hoi = soup.find('span', id="lottoDrwNo")

 

print hoi.string + "hoi"

print " "

 

list=[]

for n in range(1,7):

strV="drwtNo" + str(n)

first = soup.find('img', id=strV)['alt']

list.append(first)

print first

 

print " "

 

bonus = soup.find('img', id="bnusNo")['alt']

print bonus

 

다음과 같이 로또 번호를 읽어오는 것을 확인 할 수 있다.

  1. 2014.12.02 23:05

    비밀댓글입니다

    • 남성 2014.12.03 01:55 신고

      위 포스팅의 코드를 에디터를 열어서 파일에 저장하면 되겠죠.

특정 파일에 다음과 같은 단어 리스트가 있는 경우 중복을 제거하고~ ABC 순서로 sorting 을 해야 하는 경우가 있습니다.

 

abacuses

abaft

abalone

abalones

abacuses

abandon

abandoned

abalones

 

한 10줄 안팎이면 노가다로 하겠지만 몇 천 몇 만 줄이 되면 노가다로 하기에는 무리가 있죠~

 

이런 경우 Perl이나 Python과 같은 스크립트 언어가 제격일 텐데요~

 

오늘은 그냥 무슨 바람이 불어서 그런지 그냥 python을 사용하고 싶더군요.

 

아래 포스팅에서 소개를 했지만 제가 요즘 Spyder 같은 툴에 매력을 느껴서 그런 것도 같습니다.


2013/11/13 - [유틸] - 과학 분석에 사용되는 Python IDE Spyder

 

어쨌든 ipython을 사용하는 방법을 검색 해보니 아래 주소에 간단하게 나오더군요.


http://stackoverflow.com/questions/2931672/what-is-the-cleanest-way-to-do-a-sort-plus-uniq-on-a-python-list

 

다음과 같이 간단하게 Unique Sorting 을 할 수 있었습니다. Set Type으로 만드니깐 간단하게 중복된 내용들이 제거되더군요.

 

fo=open("input.txt","r")

line=fo.readlines()

my_list= sorted(set(line))

fo.close()

 

fo=open("result.txt","w")

fo.writelines(my_list)

fo.close()

 

이런 게 스크립트의 매력인가 봅니다.


Perl 에 CPAN(The Comprehensive Perl Archive Network)이 있다면 Python 에는 easy_installpip 가 있다고 할 수 있을 것 같네요.

 

CPAN 을 사용하듯이 easy_install 과 pip 를 사용하면~ command 창에서 쉽게 원하는 package 를 설치 할 수 있습니다.

 

검색을 해보니 easy_install 은 향후에는 없어질 거라고 하더군요.

 

뭐 난중에 없어진다고 하더라도~ 현재까지는 잘~~ 사용되고 있고

 

easy_install 을 사용해서 pip 를 설치할 것이므로~ 오늘의 포스팅에서는 easy_install 부터 설치를 해보죠~

 

현재 제 컴퓨터 환경은 Windows 7, 64 bits 이고~ python 2.7 버전이 설치되어 있는 상태 입니다.

 

어느 폴더에서나 python 을 실행 할 수 있도록 C:\Python27폴더도 환경변수의 path 에 잡혀 있습니다.

 

easy_install은 python package 인스톨 등을 위한 명령어이고~ 이런 툴을 setuptools이라 합니다.

 

아래 주소에서 ez_setup.py 파일을 다운로드 받습니다. 현재는 1.1.6 버전이 최신 버전이네요~


https://pypi.python.org/pypi/setuptools/1.1.6#windows


 

아래 이미지와 같이 받으시면 됩니다.


편의를 위해 ez_setup.py 파일도 첨부합니다.


ez_setup.py


 

편한 폴더에 다운로드 받은 후에 command 창에서 해당 폴더로 이동 한 후 아래 그림과 같이 입력하고 엔터를 눌러 주면~ setuptools 의 설치가 시작 됩니다.


python ez_setup.py




설치는 인터넷이 연결된 상태에서 진행되야 하며~ 조금만 기다리면 다음과 같이 설치가 완료 됩니다.


 

설치가 완료되면~ C:\Python27\Scripts 라는 폴더가 생성되고 해당 폴더에 easy_install-2.7.exe,

easy_install.exe 와 같은 실행 파일들이 들어 있게 됩니다.

 

easy_install.exe 명령을 아무 폴더에서나 편하게 사용하기 위해~ C:\Python27\Scripts 폴더를 환경변수의 path 에 설정해 줍니다.

 

C:\Python27폴더가 환경변수의 path 에 잡혀 있지 않은 분들은 아래 명령어와 같이 python.exe 의 full path 를 다 쳐줘야 합니다.


C:\Python27\python.exe ez_setup.py

 

환경 변수 설정 후 command 창을 재 실행 합니다.

 

그리고 다음과 같이 pip 를 설치 합니다.


easy_install pip


 

pip 라고하고 엔터를 치면~ pip 에 대한 설명들이 나옵니다.


 

install 명령을 통해 패키지를 설치하고~

pip install [패키지 이름]

 

pip list 라고 하면 현재 설치된 package 들의 목록이 다음과 같이 나타납니다.


 

아래 예와 같이 search 명령을 통해 sqlite3 와 관련한 package 들을 검색 할 수 있습니다.


 

그리고 아래 주소에서는 카테고리 별로 package 들을 검색 할 수 있고

https://pypi.python.org/pypi?%3Aaction=browse

 

아래 주소에서는 package 들의 list 가 쫘~~~ 악 나옵니다. 리스트가 하도 많아서 아래 주소로 들어가니깐 브라우져가 버벅 거리더군요.

https://pypi.python.org/pypi?%3Aaction=index

 


  1. 2014.04.27 23:55

    비밀댓글입니다

  2. 우동짭짭 2014.05.06 18:50

    파이썬을 공부하고있는 초보입ㄴ다. 올려주서셔서 감사합니다. 혹시 프로그그래밍 관련일을 하시는지요?

    • 남성 2014.05.06 19:09 신고

      방문해 주셔서 감사합니다. ^^ 프로그래밍 관련일 하고 있습니다. 저도 잘 몰라서 잊어버리지 않으려고 그때 그때 적어 놓고 있어요~ 저도 파이썬 초보에요~

  3. 2014.06.25 08:50

    비밀댓글입니다

    • 남성 2014.06.25 12:16 신고

      python.exe 를 못 찾는거 보니 환경변수로 설정되지 않은것 같네요. 윈도우라면 보통 python.exe는 C:\Python27 폴더에 들어있습니다. C:\Python27 을 path 환경 변수에 설정해 주시면 될겁니다.

      참고로~ 윈도우에서 환경 변수 설정 할때는 아래 주소에서 설명하는 Rapid Environment Editor 같은 툴을 사용하면 편리합니다.

      http://iamaman.tistory.com/1213

파이썬은 굉장히 직관적이면서도 쉬운 문법과 잘 정리된 매뉴얼 등 장점이 참 많은 언어라는 생각이 듭니다. 요즘 여차 저차 해서 파이썬을 만지작 거리고 있는데~ 참 재미 있더군요.

 

조금만 알아도 굉장히 많은 것들을 할 수 있는 효율적인 언어구나 하는 생각이 딱~~ 들었습니다.

 

어쨌든 오늘은 Python 에서 wav 파일을 읽는 방법에 대해 설명 드리려 합니다.

 

뭐 아는 분들은 아시겠지만 간단하더군요.

 

http://stackoverflow.com/questions/2060628/how-to-read-wav-file-in-python

 

아래 코드는 위 주소를 참조하여 만들었습니다.

 

위 주소의 댓글들을 보니 audiolab 이라는 모듈도 있는 것 같고 Scipy를 이용해서도 읽어 들일수가 있는 것 같더군요.

 

저는 Python 기본 모듈인 wave 모듈을 이용했습니다.

 

아래 코드는 16 비트 wave 파일을 읽어드리는 코드 입니다.

 

Mono, stereo 까지만 읽어 들일 수 있게 했습니다.

 

 

위 예제 코드는 MM.wav 라는 파일을 읽어들이는 코드 입니다.

nRead 는 읽어 들일 프레임 수 이고~ 당연히 전체 데이터 프레임 수보다는 작아야 겠죠~

wave 파일이 stereo 라면 wave_channel1, wave_channel2 에 각 채널의 데이터가 들어가고~ mono 면 wave_channel1에만 데이터가 저장 됩니다.

 

16 비트가 아니라면 struct module 의 unpack() 의 format 을 변경 해 줘야 합니다. 위 예제 코드에서 'h' 는 2 byte integer 니깐~ 매뉴얼을 참조해서 적절한 Format 으로 변경이 되어야 합니다.


요즘 Python 에 부쩍 관심이 높아지면서~

 

Python 을 좀 공부 해 볼까~~ 하다가 기왕이면 Vim 으로 코딩 해보고 싶어서, Python 관련 plugin 이 있나 구글링 해 봤더니~ 바로 나오는군요.

 

역시 내가 생각하는 건 세상에 다~~~ 있어 라는… 생각이 다시 한번 드는 순간이었습니다.

 

어쨌든 오늘은 Vim 에서 사용 가능한 Python autocomplete plugin 에 대해 소개 하려 합니다.

 

http://www.vim.org/scripts/script.php?script_id=850

 

위 주소에서 plugin 을 다운로드 받을 수 있구요~

 

위 주소에서 쭉~~ 내려 보시면 zip 파일을 다운로드 받을 수 있습니다.

 

저는 현재 윈도우 7 환경이라 윈도우를 기준으로 설명 드릴께요~

 

가장 최근 버전인 1.2 버전을 다운로드 받아서 압축을 풀면,

 

pydiction-1.2 라는 폴더가 만들어 지죠.

 

폴더 안의 python_pydiction.vim 파일을 C:\Program Files\Vim\vimfiles\ftplugin 에 넣어줍니다.

 

그리고 pydiction-1.2 폴더의 나머지 다른 파일들은 아무데나 있어도 되긴 하는데~ 개발자가 설명한 설치 예에 따라~~ 


C:\Program Files\Vim\vimfiles\ftplugin\pydiction 폴더를 하나 만들고 나머지 파일들을 넣어 줍니다.

 

이제 Vim 설정 파일인 _vimrc 파일을 엽니다. _vimrc 파일은 보통 C:\Program Files\Vim\_vimrc 에 위치 합니다.

 

위 파일을 열어서 다음과 같이 두 줄을 적어 줍니다.

 

filetype plugin on

let g:pydiction_location = 'C:\Program Files\Vim\vimfiles\ftplugin\pydiction\complete-dict'

 

이렇게 하면 설치 완료 입니다. 간단하죠~

 

그럼 Auto complete 가 어떻게 되나 함 볼까요~

 

아래 그림은 impo 까지만 타이핑 하고 Tab 키를 누른 화면 입니다.

 

 

이제 여기서 tab 키를 다다다다 눌러 가며 자신이 원하는 코드를 선택하고 엔터를 누르면 됩니다.

 

참 ~~ 편리하죠~

 

아래로 내려갈때는 tab 키, 위로 올라갈때는 Shift+tab 키를 누르면 됩니다.

 

스크립트 언어에 관심을 가지면서 자연스럽게Python 에 대해서도 조금씩 관심을 가지고 이용을 해 보고 있습니다.

 

Python은 다양한 장점이 있는 언어이지만 수치 분석을 하는 저로서는 Python 에서 복소수 타입이 기본으로 제공이 된다는 측면이 굉장한 장점으로 보였습니다.

 

MATLAB 과 같은 수치 분석에 특화된 소프트웨어를 제외 하면 복소수를 기본 타입으로 제공해 주는 언어는 드물었는데, python 은 다르더군요.

 

그래서 찾아보니 Python 에서 수치분석을 할 때 이용할 수 있는 모듈들로 numpy, scipy 와 같은 모듈과

 

그래프를 그리는데 이용되는 matplotlib 같은 모듈 등이 있길래 ~~

 

오늘은 이 모듈의 설치 방법에 대해 간단하게 알아보겠습니다.

 



일단 Python 을 설치부터 해야 겠죠.

 

Python 은 현재 3.2.2 버전까지 나와있는데, matplotlib 모듈이 현재 python 2.7 버전까지만 지원해서 python 은 2.7 버전을 선택했습니다.

 

윈도우 운영체제에서 binary release 를 제공해 주는 파이썬 2.7 대 버전은 2.7.2 버전이 있더군요.

 

아래 링크에서 다운로드 가능 합니다.

 

http://www.python.org/download/

 

각자 자신의 운영체제에 맞는 format 을 다운로드 받아서 설치 하시면 됩니다.

 

현재 설명 드리는 시점에서 제 운영체제는 Window 7, 32 비트 입니다.

 

설치야 뭐 그냥 다음 >> 다음 누르시면 되니깐 굳이 설명 드릴 필요가 없을 것 같네요.

 



Numpy , scipy 의 공식 홈페이지는 아래와 같습니다.

 

http://numpy.scipy.org/

 

numpy 는 아래 링크에서 다운로드 가능 합니다.

 

http://sourceforge.net/projects/numpy/files/

 

현재 numpy - 1.6.1 버전이 최신 버전이며, python 2.7.2을 설치 했으므로 그에 맞게

 

아래 그림처럼 선택해서 설치 했습니다.

 

 



Scipy 는 아래 링크에서 다운로드 합니다.

 

http://sourceforge.net/projects/scipy/files/scipy/0.10.1/

 

현재 scipy-0.10.1 이 최신 버전이군요.

 

아래 그림 처럼 선택해서 다운로드 받습니다.

 

 



matplotlib 은 아래 링크에서 다운로드 가능합니다.

 

http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/

 

 

이제 설치는 다 했습니다.

 

천천히 시간 날 때마다 공부 할 일만 남았군요.

 

물론 이게 더 큰일이지만~~ 굉장히 재미있을 것 같습니다.


+ Recent posts