• Tistory
    • 태그
    • 위치로그
    • 방명록
    • 관리자
    • 글쓰기
Carousel 01
Carousel 02
Previous Next

'Programming/Python'에 해당되는 글 58건

  • 2019.08.14 list 에서 최대값과 최대값의 index를 찾아보자
  • 2019.08.08 numpy의 array를 저장하고 읽어보자
  • 2019.03.05 conda를 이용한 가상환경 설정
  • 2018.03.05 os.path 모듈 사용법
  • 2018.01.19 파이썬2 와 파이썬3을 동시에 동작시키자 : __future__
  • 2016.12.13 파이썬에 GUI를 입혀보자. PyQT
  • 2016.11.09 자주사용되는 파이썬 라이브러리
  • 2016.07.15 python 에서 pass 와 continue의 차이점.
  • 2016.06.30 파이썬에서 main() 함수는 어디에 있는가?
  • 2016.06.15 파이썬에서 코드 들여쓰기 정리를 자동으로 하자. 4
  • 2016.06.13 파이썬에서 조건문을 이용하자.
  • 2016.06.09 파이썬에서 사전을 사용해 보자 ( key, value )
  • 2016.06.08 파이썬에서 리스트를 사용 하자.
  • 2016.06.03 파이썬 문자열 개행문자 제거하기 3
  • 2016.06.03 파이썬에서 문자열을 이용하자
  • 2016.06.03 파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)
  • 2016.06.03 파이썬의 기본 수식 연산자
  • 2016.06.02 파이썬에서 한글을 처리하기 위한 방법

list 에서 최대값과 최대값의 index를 찾아보자

Programming/Python 2019. 8. 14. 15:22




list에서 최대값과 최대값의 index를 찾는 방법을 정리.

 

리스트 내에서 최대값을 찾는 방법은 max를 이용한다

    $ nList = [3, 5, 1, 2, 7, 8, 5]

    $ max(nList)

    > 8

 

리스트 내에서 최대값의 index를 찾는 방법은 list.index를 이용한다

    $ nList.index(max(nList))

    > 5

 

최소값을 찾을때도 마찬가지 방법으로 min을 이용하여 찾을 수 있다.

'Programming > Python' 카테고리의 다른 글

python 2.X에서 dump한 pickle 3.X 버전에 읽기  (0) 2019.09.03
list 생성과 초기화 같이 하자  (0) 2019.08.14
numpy의 array를 저장하고 읽어보자  (0) 2019.08.08
conda를 이용한 가상환경 설정  (0) 2019.03.05
os.path 모듈 사용법  (0) 2018.03.05
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

numpy의 array를 저장하고 읽어보자

Programming/Python 2019. 8. 8. 11:02




numpy를 사용하다 보면 array의 값을 파일로 저장해야 할 경우가 생긴다.

이럴경우 따로 파일 IO를 사용하기보다 numpy의 기본 기능을 이용하면 간단하게 저장하고 읽을 수 있다.

저장 할 경우 array의 차원 등의 정보도 같이 저장되기 때문에 별다른 추가 처리를 할 필요가 없다.

 

(이하 import numpy as np 는 기본으로 포함)

1. *npy 파일로 저장하기

    npy 파일 포멧은 하나의 numpy array를 저장하기 위한 포멧이다.

    

    $ x = np.array([0, 1, 2, 3, 4, 5])

    $ np.save("./save/data.npy", x)

 

2. *.npz 파일로 저장하기 

    npz 파일 포멧은 여러개의 리스트를 한번에 저장하기 위한 포멧이다.

    이 경우는 압축 여부에 따라 두 가지 함수가 사용된다.

 

    $ y = np.array([0, 1, 2])

    $ z = np.array([3, 4, 5])

 

    # 압축하지 않고 저장하기

    $ np.savez("./save/without_compression_data.npz", y=y, z=z)

    # 압축하고 저장하기

    $ np.save_compressed("./save/compression_data.npz", y=y, z=z)

 

3. 텍스트 파일로 저장하기

    array 값을 바로 확인 가능한 텍스트 파일로 저장하기 위함이다.

    텍스트 파일로 저장 할 경우 파일의 시작과 끝에 header, footer 옵션으로 주석을 달 수 있으며

    array의 값을 표현할 포멧팅도 지정 가능하다

 

    $ x = np.array([0, 1, 2, 3, 4, 5])

    $ np.savetxt("./save/data.txt", x, header="write start", footer="write end", fmt=".1f")

 

4. 저장 된 np array 불러오기

    텍스트 데이터를 제외한 나머지 경우는 np.load를 이용하여 읽을 수 있고 텍스트 데이터는 np.loadtxt를 사용한다.

 

    $ x = np.load("./save/data.npy")

    # 여러 array가 있는 경우 저장한 이름을 index로 사용

    $ saved_npz = np.load("./save/without_compression_data.npz")

    $ saved_npz = np.load("./save/compression_data.npz")

    $ y = saved_npz ['y']

    $ z = saved_npz ['z']

 

    $ x = loadtxt('"./save/data.txt")

 

5. load 한 np array 파일 닫기

    load 한 array 데이터는 사용이 끝나면 close()를 이용하여 파일을 닫아 준다

    또는 with 문을 이용하는 것도 방법.

 

    $ saved_npz.close()

'Programming > Python' 카테고리의 다른 글

list 생성과 초기화 같이 하자  (0) 2019.08.14
list 에서 최대값과 최대값의 index를 찾아보자  (0) 2019.08.14
conda를 이용한 가상환경 설정  (0) 2019.03.05
os.path 모듈 사용법  (0) 2018.03.05
파이썬2 와 파이썬3을 동시에 동작시키자 : __future__  (0) 2018.01.19
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

conda를 이용한 가상환경 설정

Programming/Python 2019. 3. 5. 14:05




아래 명령어들은 모두 Anaconda Prompt 바로가기(아래 activate.bat파일을 호출해줌) 또는

cmd 상에서 (Anaconda/Miniconda 설치경로\Script\activate.bat) 가 실행된 상태에서 사용 가능하다.

 

 

가상환경 만들기

$ conda create -n [env-name] python=3.7

 

가상환경 활성화

$ conda activate [env-name]

 

가상환경 비활성화 

$ conda deactivate [env-name]

 

가상환경 삭제

$ conda remove -n [env-name] --all

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

list 에서 최대값과 최대값의 index를 찾아보자  (0) 2019.08.14
numpy의 array를 저장하고 읽어보자  (0) 2019.08.08
os.path 모듈 사용법  (0) 2018.03.05
파이썬2 와 파이썬3을 동시에 동작시키자 : __future__  (0) 2018.01.19
파이썬에 GUI를 입혀보자. PyQT  (0) 2016.12.13
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

os.path 모듈 사용법

Programming/Python 2018. 3. 5. 18:07




◎ os.path는 파일 경로를 생성 및 수정하고, 파일 정보를 쉽게 다룰 수 있게 해주는 모듈.

 

os.path.abspath(path)

 

현재 경로를 Prefix로 하여 입력받은 경로를 절대경로로 바꿔서 반환합니다.

>>> abspath('tmp')

'C:\\Python30\\tmp'

 

os.path.basename(path)

 

입력받은 경로의 기본 이름(base name)을 반환합니다.

abspath() 함수와 반대되는 기능을 수행한다고 볼 수 있습니다.

>>> basename('C:\\Python30\\tmp')

'tmp'

>>> basename('C:\\Python30\\tmp\\test.txt')

'test.txt'

 

os.path.commonprefix(path_list)

 

입력받은 path_list로부터 공통적인 Prefix를 추출해서 반환합니다. 그러나 이 결과는 문자열 연산에

의한 것이기 때문에 다음의 두 번째 예제와 같이 잘못된 경로가 나올 수도 있습니다.

>>> commonprefix(['C:\\Python30\\Lib', 'C:\\Python30', 'C:\\Python30\\Tools'])

'C:\\Python30'

>>> commonprefix(['C:\\Python26\\Lib', 'C:\\Python25\\Tools'])

'C:\\Python2'

 

os.path.dirname(path)

 

입력받은 파일/디렉터리의 경로를 반환합니다.

>>> dirname('C:\\Python30\\tmp\\test.txt')

'C:\\Python30\\tmp'

>>> dirname('C:\\Python30\\tmp')

'C:\\Python30'

 

os.path.exists(path)

 

입력받은 경로가 존재하면 True를 반환하고, 존재하지 않는 경우는 False를 반환합니다.

리눅스와 같은 OS에서는 파일이나 디렉터리가 존재하지만 읽기 권한이 없는 경우에도,

False를 반환할 수 있습니다.

>>> exists('C:\\Python30')

True

>>> exists('C:\\Python30\\Devanix')

False

 

os.path.expanduser(path)

 

입력받은 경로안의 "~"를 현재 사용자 디렉터리의 절대경로로 대체합니다.

"~"에 붙여서 <사용자명>을 붙이면 원하는 사용자 경로로 대체됩니다.

(유닉스/리눅스의 홈디렉터리를 나타내는 '~'과 동일합니다)

>>> expanduser('~\\devanix')

'C:\\Documents and Settings\\Administrator\\devanix'

 

os.path.expandvars(path)

 

path안에 환경변수가 있따면 확장합니다. (환경변수는 os.environ에 정의된 것을 참조)

>>> expandvars('$HOME\\temp')

'C:\\Documents and Settings\\Administrator\\temp'

>>> expandvars('$SYSTEMROOT\\var')

'C:\\WINDOWS\\var'

 

os.path.getatime(path)

 

입력받은 경로에 대한 최근 접근 시간을 반환 (반환되는 값은 epoch(1970년 1월 1일) 이후

초단위로 반환됩니다. 파일이 없거나 권한이 없는 경우 os.error 예외 발생)

>>> getatime('C:\\Python30\\python.exe')

1320966393.375

# 읽을 수 있는 형식으로 보려면 다음과 같이 하면 됩니다.

>>> import time

>>> time.gmtime(getatime('C:\\Python30\\python.exe'))

time.struct_time(tm_year=2011, tm_mon=11, tm_mday=10, tm_hour=23, tm_min=6, tm_sec=33, tm_wday=3, tm_yday=314, tm_isdst=0)

 

os.path.getmtime(path)

 

입력받은 경로에 대한 최근 변경 시간을 반환 (파일이 없거나 권한이 없는 경우 os.error 예외 발생)

>>> getmtime('C:\\Python30\\python.exe')

1320966397.453125

 

os.path.getctime(path)

 

입력받은 경로에 대한 생성시간을 반환 (유닉스와 같은 운영체제에서는 생성시간이 아닌

최근 변경 시간을 반환할 수도 있습니다. 파일이 없거나 권한이 없는 경우 os.error 예외 발생)

>>> getctime('C:\\Python30\\python.exe')

1320966393.0625    

 

os.path.getsize(path)

 

입력받은 경로에 대한 바이트 단위의 파일크기를 반환.

(파일이 없거나 권한이 없는 경우 os.error 예외 발생)

>>> getsize('C:\\Python30\\python.exe')

26624L

 

os.path.isabs(path)

 

경로가 절대경로이면 True를 반환하고, 그 외의 경우에는 False를 반환.

(실제 해당 경로를 검사하지는 않으며 입력받은 문자열을 가지고 판단합니다.)

>>> isabs('C:\\Python30\\python.exe')

True

 

os.path.isfile(path)

 

경로가 파일인지 아닌지 검사합니다. 파일인 경우에는 True를 반환하고, 그 외의 경우 False를 반환.

(혹은 해당 경로가 존재하지 않은 경우에는 False를 반환합니다)

>>> isfile('C:\\Python30\\python.exe')

True

>>> isfile('C:\\Python26\\python.exe')

False

 

os.path.isdir(path)

 

경로가 디렉터리인지 아닌지 검사합니다. 디렉터리인 경우에는 True를 반환하고, 그 외의 경우에는

False를 반환합니다. 혹은 경로가 존재하지 않은 경우에는 False 반환합니다.

>>> isdir('C:\\Python30\\python.exe')

False

>>> isfile('C:\\Python30\\Lib')

True

 

os.path.join(path1[,path2[,...]])

 

해당 OS 형식에 맞도록 입력 받은 경로를 연결합니다. (입력 중간에 절대경로가 나오면 이전에

취합된 경로는 제거하고 다시 연결합니다)

>>> join('C:\\Python30', 'Script', 'test.py')

'C:\\Python30\\Script\\test.py'

>>> join('C:\\Python30', 'D:\\Test', 'test.py')

'D:\\Test\\test.py'

 

os.path.normcase(path)

 

해당 OS에 맞도록 입력 받은 경로의 문자열을 정규화 합니다. (윈도우와 같은 경우,

아래 예제와 같이 소문자로 바꾸고 '/'를 '\\'로 변경합니다)

>>> normcase('C:\\Python30\\python.exe')

'c:\\python30\\python.exe'

>>> normcase('C:/Python30/python.exe')

'c:\\python30\\python.exe'

 

os.path.normpath(path)

 

입력 받은 경로를 정규화합니다. (현재 디렉터리(".")나 상위 디렉터리("..")와 같은 구분자를 최대한 삭제)

>>> normpath('C:\\Python30/./python.exe')

'C:\\Python30\\python.exe'

>>> normpath('C:\\Python30/./../python.exe')

'C:\\python.exe'

 

os.path.split(path)

 

입력 받은 경로를 디렉터리 부분과 파일 부분으로 나눕니다.

단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다.

>>> split('C:\\Python30\\python.exe')

('C:\\Python30', 'python.exe')

 

os.path.splitdrive(path)

 

입력 받은 경로를 드라이브 부분과 나머지 부분으로 나눕니다.

단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다.

>>> splitdrive('C:\\Python30\\python.exe')

('C:', '\\Python30\\python.exe')

 

os.path.splitext(path)

 

입력 받은 경로를 확장자 부분과 그 외의 부분으로 나눕니다.

단순한 문자열 연산이므로 실제 파일의 존재 여부는 확인하지 않습니다.

>>> splitext('C:\\Python30\\python.exe')

('C:\\Python30\\python', '.exe')

 



출처: http://devanix.tistory.com/298 [┗System∑Sec†ion┛]

출처: http://devanix.tistory.com/298 [┗System∑Sec†ion┛]

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

numpy의 array를 저장하고 읽어보자  (0) 2019.08.08
conda를 이용한 가상환경 설정  (0) 2019.03.05
파이썬2 와 파이썬3을 동시에 동작시키자 : __future__  (0) 2018.01.19
파이썬에 GUI를 입혀보자. PyQT  (0) 2016.12.13
자주사용되는 파이썬 라이브러리  (0) 2016.11.09
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬2 와 파이썬3을 동시에 동작시키자 : __future__

Programming/Python 2018. 1. 19. 09:50




파이썬2 버전에서 3버전으로 판올림 되면서 여러 부분에서 변화가 있었다.

문법들이 달라졌고 동일한 연산에 대한 결과값도 달라지고.. 등등...


그러나 한 어플리케이션을 만들면서 파이썬2 버전과 3버전에서 동시에 동작하도록 

상호호환성을 가지게 만들어 주는 방법이 있어서 기록.



__future__ 모듈


이 모듈은 파이썬2.x 에서 몇몇 기능들을 파이썬3.x 와 같이 사용 가능하게 만들어 주는 모듈이다.

흔히 사용되는 몇몇 기능은 아래와 같다.


print_function

  >>> print "hello", "world"

  hello world    # python 2.x

  SyntaxError: invalid syntax    # python 3.x


  >>> print ("hello", "world")

  ("hello", "world")    # python 2.x, 튜플이 출력 됨

  hello world    # python 3.x


  >>> from __future__ import print_function

  print ("hello", "world")

  hello world    # python 2.x & 3.x, 원하는 출력 가능.


Division

  >>> from __future__ import division    # python 3 스타일의 나누기 지원.


Absolute Import

  >>> from __future__ import absolute_import    # 표준 모듈과 동일한 이름의 로컬 모듈을 사용 가능하게 해줌.

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

conda를 이용한 가상환경 설정  (0) 2019.03.05
os.path 모듈 사용법  (0) 2018.03.05
파이썬에 GUI를 입혀보자. PyQT  (0) 2016.12.13
자주사용되는 파이썬 라이브러리  (0) 2016.11.09
python 에서 pass 와 continue의 차이점.  (0) 2016.07.15
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에 GUI를 입혀보자. PyQT

Programming/Python 2016. 12. 13. 15:18





한동안 MFC를 이용해서 프로그램 만들다 파이썬 쓰려니까 가장 첫번째로 걸리는게 GUI가 없다는 점이었다.


이런 문제를 해결 할 수 있는 좋은 방법! PyQT 를 이용하면 MFC 처럼 쉽게 GUI를 구성할 수 있다.


다음번을 위해 기록해 둬야지 안그러면 또 못찾고 헤멜것이 분명하다.



1. 먼저 PyQT를 설치

https://www.riverbankcomputing.com/software/pyqt/download

위 사이트에서 다운로드 가능하다. 

PyQT5 버전부터는 파이썬 3버전만을 지원하기 때문에

파이썬 2.7 버전을 이용하는 경우는 PyQT4 버전을 이용하면 된다.

윈도우에서는 운영체제에 맞게 설치파일 다운받아 설치하면 되고

리눅스에서는 apt-get 을 이용하여 설치 가능하다고 한다 (이건 안해봄..)


2. GUI 구성

간단한 형태는 python 상에서 코드로 직접 구현 해도 되지만 형태가 복잡해지고

프로젝트가 커지면 코드로 직접 구현하기는 점점 더 어려워지겠지..

Designer 라는프로그램을 이용하여 직접 gui를 구축 해 보자.




MFC와 마찬가지로 필요한 옵션들 끌어다 자리잡고 이름 설정하고 옵션설정하고.. 뭐 그정도..

GUI 틀을 다 만들면 파일을 *.ui 로 저장한다.


3. ui 파일을 py파일로 변환하기

다 만든 ui 파일을 파이썬에서 사용하도록 py파일로 변환이 필요하다.

변환은 pyuic4 를 통해 수행한다. 이 파일은 designer 가 설치된 경로에 있다

(/python_path/lib/site-packages/PyQt4/)


아래 명령어를 통해 ui 파일을 py 파일로 변환한다.

>> pyuic4 "*.ui파일" -o "py파일명" 


변환을 수행하면 위 사진과 같은 GUI는 아래와 같은 파이썬 코드로 변환된다.

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'firstUI.ui'
#
# Created by: PyQt4 UI code generator 4.11.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(400, 300)
self.gridLayout = QtGui.QGridLayout(Dialog)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.pushButton_Up = QtGui.QPushButton(Dialog)
self.pushButton_Up.setObjectName(_fromUtf8("pushButton_Up"))
self.gridLayout.addWidget(self.pushButton_Up, 1, 0, 1, 1)
self.pushButton_Down = QtGui.QPushButton(Dialog)
self.pushButton_Down.setObjectName(_fromUtf8("pushButton_Down"))
self.gridLayout.addWidget(self.pushButton_Down, 1, 1, 1, 1)
self.lcdNumber = QtGui.QLCDNumber(Dialog)
self.lcdNumber.setObjectName(_fromUtf8("lcdNumber"))
self.gridLayout.addWidget(self.lcdNumber, 0, 0, 1, 2)

self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
self.pushButton_Up.setText(_translate("Dialog", "Up", None))
self.pushButton_Down.setText(_translate("Dialog", "Down", None))

4. 파이썬에서 py 파일 이용하여 GUI 연결하기

3번에서 생성된 py파일을 import하고 버튼은 함수랑 연결해주고 뭐 남은 작업들 코딩하면 된다.

나는 연습삼아 업다운 카운터를 구현. 

업다운 버튼을 통해 LCDCounter 숫자가 증감하도록 구현하였다.


그 코드는 아래와 같다.

# -*- encoding: UTF-8 -*-
from PyQt4.QtGui import *
import firstUI

class XDialog(QDialog, firstUI.Ui_Dialog):
def __init__(self):
QDialog.__init__(self)
# setupUi() 메서드는 화면에 다이얼로그 보여줌
self.setupUi(self)

# 버튼과 함수 매핑
self.pushButton_Up.clicked.connect(self.upCount)
self.pushButton_Down.clicked.connect(self.downCount)

def upCount(self):
self.lcdNumber.display(self.lcdNumber.value()+1)
print 'Up'

def downCount(self):
self.lcdNumber.display(self.lcdNumber.value() - 1)
print 'Down'


# App
app = QApplication([])
dialog = XDialog()
dialog.show()
app.exec_()


다른 기능들도 연습 해 봐야지.. 

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

os.path 모듈 사용법  (0) 2018.03.05
파이썬2 와 파이썬3을 동시에 동작시키자 : __future__  (0) 2018.01.19
자주사용되는 파이썬 라이브러리  (0) 2016.11.09
python 에서 pass 와 continue의 차이점.  (0) 2016.07.15
파이썬에서 main() 함수는 어디에 있는가?  (0) 2016.06.30
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

자주사용되는 파이썬 라이브러리

Programming/Python 2016. 11. 9. 10:06




파이썬 외부 라이브러리를 찾아보다 점프투파이선 정리가 잘 되어있는 위키를 발견.
나중에 주소 찾기 힘드니까 여기에 저장.
원문 주소는 여기


sys

sys 모듈은 파이썬 인터프리터가 제공하는 변수들과 함수들을 직접 제어할 수 있게 해주는 모듈이다.

명령 행에서 인수 전달하기 - sys.argv

C:/User/home>python test.py abc pey guido

도스 창에서 위의 예처럼 test.py 뒤에 또 다른 값들을 함께 넣어 주면 sys.argv라는 리스트에그 값들이 추가된다.

예제를 따라 하며 확인해 보자. 우선 다음과 같은 파이썬 프로그램을 작성하자. argv_test.py 파일은 C:/Python/Mymoduels 디렉터리에 저장했다고 가정한다(만약 C:/Python/Mymoduels 디렉터리가 없다면 먼저 생성하고 진행하자).

# argv_test.py
import sys
print(sys.argv)

도스 창에서 다음과 같이 실행해 보자.

C:/Python/Mymodules>python argv_test.py you need python
['argv_test.py', 'you', 'need', 'python']

python이라는 명령어 뒤의 모든 것들이 공백을 기준으로 나뉘어서 sys.argv 리스트의 요소가 됨을 알 수 있다.

(※ 도스 창에서는 /, \든 상관없지만, 소스코드 안에서는 반드시 / 또는 \\ 기호를 사용해야 한다.)

강제로 스크립트 종료하기 - sys.exit

>>> sys.exit()

sys.exit는 Ctrl+Z나 Ctrl+D를 눌러서 대화형 인터프리터를 종료하는 것과 같은 기능을 한다. 프로그램 파일 내에서 사용하면 프로그램을 중단시킨다.

자신이 만든 모듈 불러와 사용하기 - sys.path

sys.path는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 즉, 이 위치에 있는 파이썬 모듈들은 경로에 상관없이 어디에서나 불러올 수가 있다.

다음은 그 실행 결과이다.

>>> import sys
>>> sys.path
['', 'C:\\Windows\\SYSTEM32\\python35.zip', 'c:\\Python35\\DLLs', 
'c:\\Python35\\lib', 'c:\\Python35', 'c:\\Python35\\lib\\site-packages']
>>>

위의 예에서 ''는 현재 디렉터리를 말한다.

# path_append.py
import sys
sys.path.append("C:/Python/Mymodules")

위와 같이 파이썬 프로그램 파일에서 sys.path.append를 이용해 경로명을 추가할 수 있다. 이렇게 하고 난 후에는 C:/Python/Mymodules라는 디렉터리에 있는 파이썬 모듈을 불러와서 사용할 수가 있다.

pickle

pickle은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다. 다음 예는 pickle 모듈의 dump 함수를 이용하여 딕셔너리 객체인 data를 그대로 파일에 저장하는 방법을 보여 준다.

>>> import pickle
>>> f = open("test.txt", 'wb')
>>> data = {1: 'python', 2: 'you need'}
>>> pickle.dump(data, f)
>>> f.close()

다음은 pickle.dump에 의해 저장된 파일을 pickle.load를 이용해서 원래 있던 딕셔너리 객체(data) 상태 그대로 불러오는 예이다.

>>> import pickle
>>> f = open("test.txt", 'rb')
>>> data = pickle.load(f)
>>> print(data)
{2:'you need', 1:'python'}

위의 예에서는 딕셔너리 객체를 이용하였지만 어떤 자료형이든 상관없이 저장하고 불러올 수 있다.

OS 모듈

OS 모듈은 환경 변수나 디렉터리, 파일 등의 OS 자원을 제어할 수 있게 해주는 모듈이다.

내 시스템의 환경 변수값을 알고 싶을 때 - os.environ

시스템은 제각기 다른 환경 변수값을 가지고 있는데, os.environ은 현재 시스템의 환경 변수 값들을 보여 준다. 다음을 따라 해보자.

>>> import os
>>> os.environ
environ({'PROGRAMFILES': 'C:\\Program Files', 'APPDATA': … 생략 …})
>>>

위의 결과값은 필자의 시스템 정보이다. os.environ은 환경 변수에 대한 정보를 딕셔너리 객체로 리턴한다. 자세히 보면 여러 가지 유용한 정보를 찾을 수 있다.

리턴받은 객체가 딕셔너리이기 때문에 다음과 같이 호출할 수 있다. 다음은 필자 시스템의 PATH 환경 변수에 대한 내용이다.

>>> os.environ['PATH']
'C:\\ProgramData\\Oracle\\Java\\javapath;...생략...'

디렉터리 위치 변경하기 - os.chdir

os.chdir을 이용하면 아래와 같이 현재 디렉터리의 위치를 변경할 수 있다.

>>> os.chdir("C:\WINDOWS")

디렉터리 위치 리턴받기 - os.getcwd

os.getcwd는 현재 자신의 디렉터리 위치를 리턴한다.

>>> os.getcwd()
'C:\WINDOWS'

시스템 명령어 호출하기 - os.system

시스템 자체의 프로그램이나 기타 명령어들을 파이썬에서 호출할 수도 있다. os.system("명령어")처럼 사용한다. 다음은 현재 디렉터리에서 시스템 명령어인 dir을 실행하는 예이다.

>>> os.system("dir")

실행한 시스템 명령어의 결과값 리턴받기 - os.popen

os.popen은 시스템 명령어를 실행시킨 결과값을 읽기 모드 형태의 파일 객체로 리턴한다.

>>> f = os.popen("dir")

읽어 들인 파일 객체의 내용을 보기 위해서는 다음과 같이 하면 된다.

>>> print(f.read())

기타 유용한 os 관련 함수

함수설명
os.mkdir(디렉터리)디렉터리를 생성한다.
os.rmdir(디렉터리)디렉터리를 삭제한다.단, 디렉터리가 비어있어야 삭제가 가능하다.
os.unlink(파일)파일을 지운다.
os.rename(src, dst)src라는 이름의 파일을 dst라는 이름으로 바꾼다.

shutil

shutil은 파일을 복사해 주는 파이썬 모듈이다.

파일 복사하기 - shutil.copy(src, dst)

src라는 이름의 파일을 dst로 복사한다. 만약 dst가 디렉터리 이름이라면 src라는 파일 이름으로 dst라는 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.

다음의 예를 보자.

>>> import shutil
>>> shutil.copy("src.txt", "dst.txt")

위 예를 실행해 보면 src.txt 파일과 동일한 내용의 파일이 dst.txt로 복사되는 것을 확인할 수 있다.

glob

가끔 파일을 읽고 쓰는 기능이 있는 프로그램을 만들다 보면 특정 디렉터리에 있는 파일 이름 모두를 알아야 할 때가 있다. 이럴 때 사용하는 모듈이 바로 glob이다.

디렉터리에 있는 파일들을 리스트로 만들기 - glob(pathname)

glob 모듈은 디렉터리 내의 파일들을 읽어서 리턴한다. *, ? 등의 메타 문자를 써서 원하는 파일만 읽어 들일 수도 있다.

다음은 C:/Python이라는 디렉터리에 있는 파일 중 이름이 문자 q로 시작하는 파일들을 모두 찾아서 읽어 들이는 예이다.

>>> import glob
>>> glob.glob("C:/Python/q*")
['C:\Python\quiz.py', 'C:\Python\quiz.py.bak']
>>>

tempfile

파일을 임시로 만들어서 사용할 때 유용한 모듈이 바로 tempfile이다. tempfile.mktemp()는 중복되지 않는 임시 파일의 이름을 무작위로 만들어서 리턴한다.

>>> import tempfile
>>> filename = tempfile.mktemp()
>>> filename
'C:\WINDOWS\TEMP\~-275151-0'

tempfile.TemporaryFile()은 임시 저장 공간으로 사용될 파일 객체를 리턴한다. 이 파일은 기본적으로 바이너리 쓰기 모드(wb)를 갖는다. f.close()가 호출되면 이 파일 객체는 자동으로 사라진다.

>>> import tempfile
>>> f = tempfile.TemporaryFile()
>>> f.close()

time

시간과 관련된 time 모듈에는 유용한 함수가 굉장히 많다. 그중에서 가장 유용한 몇 가지만 알아보자.

time.time

time.time()은 UTC(Universal Time Coordinated 협정 세계 표준시)를 이용하여 현재 시간을 실수 형태로 리턴하는 함수이다. 1970년 1월 1일 0시 0분 0초를 기준으로 지난 시간을 초 단위로 리턴한다.

>>> import time
>>> time.time()
988458015.73417199

time.localtime

time.localtime은 time.time()에 의해서 반환된 실수값을 이용해서 연도, 달, 월, 시, 분, 초,.. 의 형태로 바꾸어 주는 함수이다.

>>> time.localtime(time.time())
time.struct_time(tm_year=2013, tm_mon=5, tm_mday=21, tm_hour=16,
    tm_min=48, tm_sec=42, tm_wday=1, tm_yday=141, tm_isdst=0)

time.asctime

위의 time.localtime에 의해서 반환된 튜플 형태의 값을 인수로 받아서 날짜와 시간을 알아보기 쉬운 형태로 리턴하는 함수이다.

>>> time.asctime(time.localtime(time.time()))
'Sat Apr 28 20:50:20 2001'

time.ctime

time.asctime(time.localtime(time.time()))은 time.ctime()을 이용해 간편하게 표시할 수 있다. asctime과 다른점은 ctime은 항상 현재 시간만을 리턴한다는 점이다.

>>> time.ctime()
'Sat Apr 28 20:56:31 2001'

time.strftime

time.strftime('출력할 형식 포맷 코드', time.localtime(time.time()))

strftime 함수는 시간에 관계된 것을 세밀하게 표현할 수 있는 여러 가지 포맷 코드를 제공한다.

시간에 관계된 것을 표현하는 포맷 코드

포맷코드설명예
%a요일 줄임말Mon
%A요일Monday
%b달 줄임말Jan
%B달January
%c날짜와 시간을 출력함06/01/01 17:22:21
%d날(day)[00,31]
%H시간(hour)-24시간 출력 형태[00,23]
%I시간(hour)-12시간 출력 형태[01,12]
%j1년 중 누적 날짜[001,366]
%m달[01,12]
%M분[01,59]
%pAM or PMAM
%S초[00,61]
%U1년 중 누적 주-일요일을 시작으로[00,53]
%w숫자로 된 요일[0(일요일),6]
%W1년 중 누적 주-월요일을 시작으로[00,53]
%x현재 설정된 로케일에 기반한 날짜 출력06/01/01
%X현재 설정된 로케일에 기반한 시간 출력17:22:21
%Y년도 출력2001
%Z시간대 출력대한민국 표준시
%%문자%
%y세기부분을 제외한 년도 출력01

다음은 time.strftime을 사용하는 예이다.

>>> import time
>>> time.strftime('%x', time.localtime(time.time()))
'05/01/01'
>>> time.strftime('%c', time.localtime(time.time()))
'05/01/01 17:22:21'

time.sleep

time.sleep 함수는 주로 루프 안에서 많이 사용된다. 이 함수를 사용하면 일정한 시간 간격을 두고 루프를 실행할 수 있다. 다음의 예를 보자.

#sleep1.py
import time
for i in range(10):
    print(i)
    time.sleep(1)

위 예는 1초 간격으로 0부터 9까지의 숫자를 출력한다. 위 예에서 볼 수 있듯이 time.sleep 함수의 인수는 실수 형태를 쓸 수 있다. 즉, 1이면 1초, 0.5면 0.5초가 되는 것이다.

calendar

calendar는 파이썬에서 달력을 볼 수 있게 해주는 모듈이다.

calendar.calendar(연도)로 사용하면 그 해의 전체 달력을 볼 수 있다. 결과값은 달력이 너무길어 생략하겠다.

>>> import calendar
>>> print(calendar.calendar(2015))

calendar.prcal(연도)를 사용해도 위와 똑같은 결과값을 얻을 수 있다.

>>> calendar.prcal(2015)

다음의 예는 2015년 12월의 달력만 보여 준다.

>>> calendar.prmonth(2015, 12)
December 2015
Mo Tu We Th Fr Sa Su
      2  3  4  5  6
7  8  9  10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

calendar.weekday

calendar 모듈의 또 다른 유용한 함수를 보자. weekday(연도, 월, 일) 함수는 그 날짜에 해당하는 요일 정보를 리턴한다. 월요일은 0, 화요일은 1, 수요일은 2, 목요일은 3, 금요일은 4, 토요일은 5, 일요일은 6이라는 값을 리턴한다.

>>> calendar.weekday(2015, 12, 31)
3

위의 예에서 2015년 12월 31일은 목요일임을 보여 준다.

calendar.monthrange

monthrange(연도, 월) 함수는 입력받은 달의 1일이 무슨 요일인지와 그 달이 며칠까지 있는지를 튜플 형태로 리턴한다.

>>> calendar.monthrange(2015,12)
(1, 31)

위의 예는 2015년 12월의 1일은 화요일이고, 이 달은 31일까지 있다는 것을 보여 준다.

날짜와 관련된 프로그래밍을 할 때 위의 2가지 함수는 매우 유용하게 사용된다.

random

random은 난수(규칙이 없는 임의의 수)를 발생시키는 모듈이다. random과 randint에 대해서 알아보자.

다음은 0.0에서 1.0 사이의 실수 중에서 난수값을 리턴하는 예를 보여 준다.

>>> import random
>>> random.random()
0.53840103305098674

다음 예는 1에서 10 사이의 정수 중에서 난수값을 리턴한다.

>>> random.randint(1, 10)
6

다음 예는 1에서 55 사이의 정수 중에서 난수값을 리턴한다.

>>> random.randint(1, 55)
43

random 모듈을 이용해서 재미있는 함수를 하나 만들어 보자.

# random_pop.py
import random
def random_pop(data):
    number = random.randint(0, len(data)-1)
    return data.pop(number)

if __name__ == "__main__":
    data = [1, 2, 3, 4, 5]
    while data: print(random_pop(data))
결과값:
2 
3 
1 
5 
4

위의 random_pop 함수는 리스트의 요소 중에서 무작위로 하나를 선택하여 꺼낸 다음 그 값을 리턴한다. 물론 꺼내진 요소는 pop 메서드에 의해 사라진다.

random_pop 함수는 random 모듈의 choice 함수를 사용하여 다음과 같이 좀 더 직관적으로 만들 수도 있다.

def random_pop(data):
    number = random.choice(data)
    data.remove(number)
    return number

random.choice 함수는 입력으로 받은 리스트에서 무작위로 하나를 선택하여 리턴한다.

리스트의 항목을 무작위로 섞고 싶을 때는 random.shuffle 함수를 이용하면 된다.

>>> import random
>>> data = [1, 2, 3, 4, 5]
>>> random.shuffle(data)
>>> data
[5, 1, 3, 4, 2]
>>>

[1, 2, 3, 4, 5]라는 리스트가 shuffle 함수에 의해 섞여서 [5, 1, 3, 4, 2]로 변한 것을 확인할 수 있다.

webbrowser

webbrowser는 자신의 시스템에서 사용하는 기본 웹 브라우저가 자동으로 실행되게 하는 모듈이다. 아래의 예제는 웹 브라우저를 자동으로 실행시키고 해당 URL인 http://google.com으로 가게 해준다.

>>> import webbrowser
>>> webbrowser.open("http://google.com")

webbrowser의 open 함수는 웹 브라우저가 이미 실행된 상태이면 입력 주소로 이동한다. 만약 웹 브라우저가 실행되지 않은 상태이면 새로 웹 브라우저를 실행한 후 해당 주소로 이동한다.

open_new 함수는 이미 웹 브라우저가 실행된 상태이더라도 새로운 창으로 해당 주소가 열리도록 한다.

>>> webbrowser.open_new("http://google.com")

[스레드를 다루는 threading 모듈]

컴퓨터에서 동작하고 있는 프로그램을 프로세스(Process)라고 한다. 보통 1개의 프로세스는 1가지 일만 하지만, 스레드를 이용하면 한 프로세스 내에서 2가지 또는 그 이상의 일을 동시에 수행하게 할 수 있다. 간단한 예제로 설명을 대신하겠다.

import threading
import time

def say(msg):
    while True:
        time.sleep(1)
        print(msg)

for msg in ['you', 'need', 'python']:
    t = threading.Thread(target=say, args=(msg,))
    t.daemon = True
    t.start()

for i in range(100):
    time.sleep(0.1)
    print(i)

첫 번째 for문에서 ['you', 'need', 'python']이라는 리스트의 요소 개수만큼 스레드가 생성되고, 생성된 스레드는 say 메서드를 수행하게 되어 1초에 한 번씩 입력으로 받은 msg 변수값을 리턴한다. 두 번째 for문은 매 0.1초마다 0부터 99까지 숫자를 출력하는데, 바로 이 부분이 메인 프로그램이 되며 이 메인 프로그램이 종료되는 순간 생성된 스레드들도 함께 종료가 된다. t.daemon = True와 같이 daemon 플래그를 설정하면 주 프로그램이 종료되는 순간 데몬 스레드도 함께 종료된다.

위 예제의 실행 결과값은 다음과 비슷할 것이다.

0
you
need
python
1
2
3
4
5
6
7
8
9
10
you
need
python
11
12
...

위 결과값에서 볼 수 있듯이 스레드는 메인 프로그램과는 별도로 실행되는 것을 확인할 수 있다.

이러한 스레드 프로그래밍을 가능하게 해주는 것이 바로 threading.Thread 클래스이다. 이 클래스의 첫번째 인수는 함수 이름을, 두 번째 인수는 첫 번째 인수인 함수의 입력 변수를 받는다. 다음과 같이 스레드를 클래스로 정의해도 동일한 결과를 얻을 수 있다.

import threading
import time

class MyThread(threading.Thread):
    def __init__(self, msg):
        threading.Thread.__init__(self)
        self.msg = msg
        self.daemon = True

    def run(self):
        while True:
            time.sleep(1)
            print(self.msg)

for msg in ['you', 'need', 'python']:
    t = MyThread(msg)
    t.start()

for i in range(100):
    time.sleep(0.1)
    print(i)

스레드를 클래스로 정의할 경우에는 __init__ 메서드에서 threading.Thread.__init__(self)와 같이 부모 클래스의 생성자를 반드시 호출해야 한다. MyThread로 생성된 객체의 start 메서드를 실행할 때는 MyThread 클래스의 run 메서드가 자동으로 수행된다.



저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬2 와 파이썬3을 동시에 동작시키자 : __future__  (0) 2018.01.19
파이썬에 GUI를 입혀보자. PyQT  (0) 2016.12.13
python 에서 pass 와 continue의 차이점.  (0) 2016.07.15
파이썬에서 main() 함수는 어디에 있는가?  (0) 2016.06.30
파이썬에서 코드 들여쓰기 정리를 자동으로 하자.  (4) 2016.06.15
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

python 에서 pass 와 continue의 차이점.

Programming/Python 2016. 7. 15. 17:11




파이썬에서 pass 와 continue의 개념을 잘 짚고 가야지.


continue는 loop에서 현재 행 이하의 구문은 실행 하지 않고 loop의 시작지점으로 돌아갈 경우 사용.


pass는 단순히 특별한 소스코드가 없고 지나갈 떄 사용한다.


예를들어 함수를 선언은 해 놨으나 아직 내용 정의 부분은 미구현인 경우 아무것도 써주지 않으면 에러가 나겠지만 pass 를 이용하여 작성은 하였으되 아무일도 하지않고 그냥 지나가는 역할을 할 수 있게 한다.


def test_pass(self):
pass


loop 에서 continue와 햇갈릴 수 있는데 pass의 경우 해당라인을 지나 이하 라인의 코드들을 실행하기 때문에 


continue와는 큰 차이를 갖는다고 할 수 있다.


예를들어 1~10 까지의 숫자 중 홀수만 출력 할 경우


# continue
i = 0
while i < 10:
i += 1
if i % 2 == 0:
continue
print i

# pass
i = 0
while i < 10:
i += 1
if i % 2 == 0:
pass
print i

언듯 보면 위 아래 둘다 홀수만 잘 출력 할 듯 하지만 아래의 구문은 모든 숫자를 출력한다.


위에서 보았듯이 pass는 continue와 달리 해당 라인만 건너 지나가기 때문에 아래에 위치한 print 문이 매번 실행되기 때문이다.

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에 GUI를 입혀보자. PyQT  (0) 2016.12.13
자주사용되는 파이썬 라이브러리  (0) 2016.11.09
파이썬에서 main() 함수는 어디에 있는가?  (0) 2016.06.30
파이썬에서 코드 들여쓰기 정리를 자동으로 하자.  (4) 2016.06.15
파이썬에서 조건문을 이용하자.  (0) 2016.06.13
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 main() 함수는 어디에 있는가?

Programming/Python 2016. 6. 30. 17:58




파이썬을 처음 접하면서 프로그램의 시작점이 어디인가에 대한 궁금증이 생겼다.


뭐 결론적으로 정리하자면 

우선 파이선은 인터프리터 언어의 특성상 전체 코드의 시작부터 끝까지 모든 라인을 수행한다.

그렇기에 따로 메인 함수가 없는것. 


그렇다면 가끔 코드에서 보이는 if __name__ == '__main__'  이녀석의 정체는 무엇인가  


파이선 코드의 경우 인터프리터가 해당 코드를 불러서 직접 실행 할 수도 있고, 다른 파이썬 파일에서 

import로 불러다 사용할 경우도 있을 것이다.


인터프리터가 직접 실행하는 경우는 내부적으로 존재하는 __name__ 이라는 변수의 내용을 __main__으로 할당한다.


따라서 저 if문의 의미는 해당 코드가 인터프리터가 직접 실행 한 경우에 한해서만 수행하라는 의미가 된다.


마찬가지로, 저 범위에 들어 있는 내용은 다른 코드에서 import 하여 사용하는 경우에는 동작하지 않게 된다.



저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

자주사용되는 파이썬 라이브러리  (0) 2016.11.09
python 에서 pass 와 continue의 차이점.  (0) 2016.07.15
파이썬에서 코드 들여쓰기 정리를 자동으로 하자.  (4) 2016.06.15
파이썬에서 조건문을 이용하자.  (0) 2016.06.13
파이썬에서 사전을 사용해 보자 ( key, value )  (0) 2016.06.09
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 코드 들여쓰기 정리를 자동으로 하자.

Programming/Python 2016. 6. 15. 09:52




비주얼 스튜디오를 사용할때 흔히 사용 하던 기능중에 Alt + F8 기능이 있다.


코드 중 들여쓰기 를 자동으로 정렬해 주는 기능이다.


파이참을 사용하면서 이런 기능이 없나 생각만 하고 있었는데 비슷한 기능을 하는 녀석이 있다.


파이참에서는 Ctrl + Alt + i 로 코드 자동정렬이 가능하다.


다만 주의할 점이 C 에서는 영역구분이 중괄호를 사용하여 명확한데 파이썬에서는 화이트스페이스로 구분하면서


자동 정렬 기능이 완벽하지 않은 듯 하다.


예를 들어 

def func(k):
k = k*10
return k

이런 함수 구문이 있다고 하자.


얘가 들여쓰기가 아래처럼 정렬되지 않았을 경우에...

def func(k):
k = k*10
return k

Ctrl + Alt + i 로 자동 정렬을 수행하면 

def func(k):
k = k*10
return k

return 문까지 자동 정렬 되기를 기대하였으나 return 은 자동 정렬되지 않더라..


예제에서 보이는 def 나 return 그리고 print 등과 같은 사전에 정의되어 있는 녀석들은 

맨 앞으로 정렬 하는 것이 기본설정 인 듯하다.


아무 생각없이 전체선택 하고 자동 정렬 할 경우 낭패를 볼 지도 모르겠다.. 조심해야지.



저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

python 에서 pass 와 continue의 차이점.  (0) 2016.07.15
파이썬에서 main() 함수는 어디에 있는가?  (0) 2016.06.30
파이썬에서 조건문을 이용하자.  (0) 2016.06.13
파이썬에서 사전을 사용해 보자 ( key, value )  (0) 2016.06.09
파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 조건문을 이용하자.

Programming/Python 2016. 6. 13. 09:42




파이썬에서 조건문은 C의 것과 매우 유사하다.


C 에서는 if / else if / else 로 구분 되던 조건문이

파이썬에서는 if / elif / else 로 사용된다는점.


그리고 조건문이 C에서는 괄호안에 표현하던 것을 괄호 없이 조건 서술 후  콜론으로 내용을 쓴다는점.


그리고 처음에 가장 적응 안됐던 C의 { } 중괄호로 영역 구분하던 것을 python에서는 들여쓰기로 조절한다는것..


기억 하도록 하자.


# if / elif / else
# C의 if / else if / else 와 동일한 조건문

'''
if 조건1:
수행 할 내용
elif 조건2:
수행 할 내용
else 조건3:
수행 할 내용
'''
nNumber = 3;

if nNumber > 5:
print "값이 5보다 큽니다."
elif nNumber > 3:
print "값은 4 또는 5 입니다"
else:
print "값은 1 또는 2 또는 3 입니다."

>> 값은 1 또는 2 또는 3 입니다.


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 main() 함수는 어디에 있는가?  (0) 2016.06.30
파이썬에서 코드 들여쓰기 정리를 자동으로 하자.  (4) 2016.06.15
파이썬에서 사전을 사용해 보자 ( key, value )  (0) 2016.06.09
파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 사전을 사용해 보자 ( key, value )

Programming/Python 2016. 6. 9. 13:16




파이썬에는 사전이라는 개념이 있다.


이는 key와 value로 구성되어 있고 key 는 list에서의 index와 같은 역할을 한다.

다만 key에는 순서가 입력순이 아니기 때문에 음수index를 이용하는 등의 방법은 불가하다.


print 해보면 key 값으로 정렬되어 출력되긴 하지만 이것은 보여주는 방법일 뿐, key의 순서를 의미함은 아니다.


기본적인 사용방법 정리.


# Dictionary    key : value
dDict = {'이름':'사용자', "나이":29, '성별':"남"}

# index는 사용 불가능, key 로 접근
dDict[0] # error
dDict['이름'] # "사용자"

# key로 값 불러오고 수정 가능
dDict['이름'] = "홍길동" # {'이름':'홍길동', "나이":29, '성별':"남"}

# del 함수를 이용하여 항목 삭제
del dDict["성별"] # {'이름':'홍길동', "나이":29}

# 사전 내 항목 확인 items
dDict.items() # dict_items([('이름','홍길동'), ("나이",29)])

# 사전 내 key list 추출
dDict.keys() # dict_keys(['이름', '나이'])

# 사전 내 value list 추출
dDict.values() # dict_values(['홍길동', 29])

# key 값으로 value 불러오기 대괄호 이용한 것과 동일
dDict.get("이름") # "홍길동"

# key 의 존재여부 확인
# 2.X 버전에서는 has_key 로, 3버전 이후에서는 in 함수를 이용
# 2.X
dDict.has_key("이름") # True
dDict.has_key('성별') # False
# 3.X
'성별' in dDict # False

# 사전에 항목 추가
dDict['성별'] = "남" # {'이름':'홍길동', "나이":29, '성별':"남"}

# 사전 초기화
dDict.clear() # {}


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 코드 들여쓰기 정리를 자동으로 하자.  (4) 2016.06.15
파이썬에서 조건문을 이용하자.  (0) 2016.06.13
파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 문자열을 이용하자  (0) 2016.06.03
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 리스트를 사용 하자.

Programming/Python 2016. 6. 8. 11:54




기본적으로 리스트의 사용법은 c의 것과 크게 차이가 없다.


다만 리스트 내에 자료형이 고정적이지 않기 때문에 아무 데이터나 넣을 수 있다는점


리스트에서 주로 사용하는 기능들 정리 해 보자.



# list에는 자료형 관계없이 삽입 가능
lList = [1, 2, 3.14, 'a', "abc"]

# index로 내용 확인 가능하며 음수는 끝에서부터 카운팅
print lList[2] # 3.14
print lList[-1] # "abc"

# 리스트에 요소 추가하기, 하나의 요소씩 추가 가능
lList.append(4) # [1, 2, 3.14, 'a', "abc", 4]

# 리스트의 지정 위치에 요소 삽입하기
lList.insert(2, "second") # [1, 2, "second", 3.14, 'a', "abc", 4]

# 리스트에 요소들 추가하기, 여러 요소 추가 가능
lList.extend([2, 1]) # [1, 2, "second", 3.14, 'a', "abc", 4, 2, 1]

# 요소의 위치 확인
lList.index(3.14) # index(요소, 탐색시작index, 탐색종료index)

# 요소 개수 확인
lList.count(3.14) # 리스트 내 해당 요소가 몇개 있는지 확인

# 요소를 꺼내기, 꺼낸 요소가 반환되며 파라미터는 index, 기본은 맨 끝.
lList.pop(1) # [1, "second", 3.14, 'a', "abc", 4, 2, 1]

# 요소를 제거하기, 파라미터는 제거 할 요소, 기본은 맨 처음
lList.remove('a') # [1, "second", 3.14, "abc", 4, 2, 1]

# 리스트 정렬하기, 기본은 오름차순, reverse=True 옵션으로 내림차순
lList.sort() # [1, 1, 2, 3.14, 4, 'abc', 'second']

# 리스트 순서 반전하기
lList.reverse()
print lList # ['second', 'abc', 4, 3.14, 2, 1, 1]


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 조건문을 이용하자.  (0) 2016.06.13
파이썬에서 사전을 사용해 보자 ( key, value )  (0) 2016.06.09
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 문자열을 이용하자  (0) 2016.06.03
파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)  (0) 2016.06.03
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬 문자열 개행문자 제거하기

Programming/Python 2016. 6. 3. 14:04




파일 입출력을 하다보면 라인 단위로 읽어오는 경우에는 끝에 개행문자 \n 이 포함되어 있다


문자열만을 출력하기 위해서는 개행문자를 제거 해 줄 필요가 있다.



print 문에서 개행문자 제거


3버전 대에는 파라미터로 end='' 를 추가 해주면 맨 뒤에 위치한 개행문자를 제거 해 준다.


동일한 역할을 2버전 대에서는 끝에 콤마를 찍어 주는 방식으로 수행한다.

sStr = "Test abcd qwerty\n"

# Python 2 버전
print (sStr),

# Python 3 버전
print (sStr, end='')




============================================================


170705 추가


rstrip 함수를 사용하면 개행문자를 쉽게 제거할 수 있다.


sStr = "Test abcd qwerty\n"

sStr.rstrip('\n') // "Test abcd qwerty"


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 사전을 사용해 보자 ( key, value )  (0) 2016.06.09
파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬에서 문자열을 이용하자  (0) 2016.06.03
파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)  (0) 2016.06.03
파이썬의 기본 수식 연산자  (0) 2016.06.03
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 문자열을 이용하자

Programming/Python 2016. 6. 3. 13:18




주로 파일 입출력을 하거나 결과물을 출력할때 문자열을 많이 사용하게 된다.


파이썬에서는 문자열을 작은 따옴표('문자열' )나 큰따옴표("문자열")을 이용하여 표시한다

둘 다 동일한 문자열로 인식하는 듯 하니 편한걸로 이용하면 되겠다.


MFC에서 사용하던 CString.format 이나 printf / sprintf 등에서 사용하던 문자열 포멧부터


문자열 분리하는 방법까지 간단한 사용법 정리.


# printf 와 같이 포멧 이용 문자열
sFormat = "%s의 가격은 %d원 입니다\n" % ("사과", 2000)
print sFormat

# 중괄호를 이용한 포멧이용
# .format을 이용하면 파라미터 처럼 이용 가능
sBracket = "{} {}".format('첫번째항목', 2)
print sBracket

# 중괄호 안에 숫자를 이용하면 format 안의 숫자번째 파라미터 이용
sBracket2 = "{0} {0} {2} {1}".format("첫번째항목", "두번째항목", "세번째항목")
print sBracket2

str = " ABCDEFG hijklm "

# 문자열 위치 찾기 find
print str.find("CDE")

# 좌우 공백 제거를 위한 strip / lstrip / rstrip
print str.strip()

# 문자열을 분리하는 split
sSplit = str.split(" ")
print sSplit


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)  (0) 2016.06.03
파이썬의 기본 수식 연산자  (0) 2016.06.03
파이썬에서 한글을 처리하기 위한 방법  (0) 2016.06.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)

Programming/Python 2016. 6. 3. 11:30




코딩을 하다보면 필수적으로 사용하게 되는 변수.


일반적인 C와같은 언어에서는 변수를 사용할 때 여러 변수 타입이 정해 져 있고 그 타입에 따라

크기도 정해 져 있으며 변수에 맞는 값만을 대입 할 수 있었다.


이와는 달리 파이썬에서는 변수를 선언 할 때 자료형을 명시하지 않아도 된다.


이와 같은 처리가 가능 한 이유는 파이썬에서는 모든 값을 object (이하 객체) 로 생성하여 관리하기 때문이다.


아래 코드를 보자.

# C
int nNumber = 3;
int nNumber2 = 3;

# Python
nNumber = 3
nNumber2 = 3

일반적인 C 에서는 int 라는 정수형 데이터를 담는 자료형을 가지고 있고 이러한 자료형을 갖는 변수 nNumber라는 변수를 생성한다. 그리고 이 변수가 3이라는 값을 가지게 되는 것이다.


이와는 다르게 파이썬에서는 nNumber 라는 객체와 3이라는 객체가 생성된다. 이후 nNumber라는 객체가 가르키는 값이 3이라는 객체가 되는 것이다.


이와같은 방식의 차이로 인해 파이썬에서는 여러 변수가 동일한 값을 가진다면 서로 각각의 값을 가지는 것이 아니라 하나의 객체를 가리키고있는 형태가 되게 된다.


그림으로 표현하면 아래와 같다





예시로 사용한 정수 외에도 실수, 문자열 등 다양한 변수를 이용 할 때에도 각각이 하나의 객체가 되고 변수는 그 객체를 가르키고 있을 뿐이기 때문에 별도의 자료형 선언 없이 변수 선언이 가능 해 진다.

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 문자열을 이용하자  (0) 2016.06.03
파이썬의 기본 수식 연산자  (0) 2016.06.03
파이썬에서 한글을 처리하기 위한 방법  (0) 2016.06.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬의 기본 수식 연산자

Programming/Python 2016. 6. 3. 09:53




파이썬에서도 수식 계산을 위한 연산자들이 존재한다.


파이썬에서 사용되는 기본 수식 연산자는 아래의 7가지 이다.


  • + : 두 수를 더한다
  • - : 두 수를 뺀다
  • * : 두 수를 곱한다
  • / : 두 수를 나눈다
  • // : 두 수를 나눠 몫을 출력한다
  • % : 두 수를 나눠 나머지를 출력한다
  • ** : 거듭제곱연산

결과를 확인 해 보자. 


print "29 + 6 = ",  29 + 6
print "29 - 6 = ", 29 - 6
print "29 * 6 = ", 29 * 6
print "29 / 6 = ", 29 / 6
print "29 // 6 = ", 29 // 6
print "29 % 6 = ", 29 % 6
print "2^6 = ", 2 ** 6

위와 같이 작성하고 실행 해 보면 아래와 같은 결과를 얻을 수 있다.


29 + 6 =  35
29 - 6 = 23
29 * 6 = 174
29 / 6 = 4
29 // 6 = 4
29 % 6 = 5
2^6 = 64

여기서 한가지 특이한 점은 29/6 의 결과에서 실수 연산이 아닌 정수연산을 한다는 점이다.


파이썬 2버전까지는 기본연산이 정수연산이고 3버전 이후로는 실수연산을 한다고 한다.


실수 연산을 하기 위해서는 상단에 

from __future__ import division

해당 구문을 추가 해 주면 된다.


다시 동일한 연산을 수행 해 보면

29 + 6 =  35
29 - 6 = 23
29 * 6 = 174
29 / 6 = 4.83333333333
29 // 6 = 4
29 % 6 = 5
2^6 = 64

아까의 연산과는 달리 29/6 의 연산이 실수형으로 계산 됨을 확인 할 수 있다.


저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 문자열을 이용하자  (0) 2016.06.03
파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)  (0) 2016.06.03
파이썬에서 한글을 처리하기 위한 방법  (0) 2016.06.02
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,

파이썬에서 한글을 처리하기 위한 방법

Programming/Python 2016. 6. 2. 17:26




파이썬을 시작하고 print든 뭐든 하여간 한글을 처리해야 하는 경우가 있다.


있다기 보다 사실 많이 쓰지..


아무 생각없이

>>> print("한글") 


할 경우 정상 동작하지 않고 에러를 뿜뿜한다.


기본값으로 한글에 대한 처리를 해주지 않는 듯 하다.


이러한 문제를 해결하기 위해서는 .py 파일 최상단에 


#-*- coding: utf-8 -*-


이렇게 한줄만 추가 해주면 된다.


별다른 처리 없이 저놈만 넣어주만 한글 처리를 해 주는군..

저작자표시 비영리 (새창열림)

'Programming > Python' 카테고리의 다른 글

파이썬에서 리스트를 사용 하자.  (0) 2016.06.08
파이썬 문자열 개행문자 제거하기  (3) 2016.06.03
파이썬에서 문자열을 이용하자  (0) 2016.06.03
파이썬에서 변수를 이용하기. 자료형이 없어도 가능! (Variable)  (0) 2016.06.03
파이썬의 기본 수식 연산자  (0) 2016.06.03
블로그 이미지

매직블럭

작은 지식들 그리고 기억 한조각

,
  • «
  • 1
  • 2
  • 3
  • »

카테고리

  • 살다보니.. (450)
    • 주절거림 (3)
    • 취미생활 (36)
      • 지식과 지혜 (3)
      • 풍경이 되어 (4)
      • Memories (17)
      • 엥겔지수를 높여라 (2)
    • mathematics (6)
      • Matrix Computation (2)
      • RandomProcesses (3)
    • English.. (8)
    • Programming (147)
      • C, C++, MFC (51)
      • C# (1)
      • OpenCV (17)
      • Python (58)
      • Git, Docker (3)
      • Matlab (4)
      • Windows (3)
      • Kinect V2 (2)
      • 기타 etc. (8)
    • 전공관련 (80)
      • Algorithm (6)
      • Deep Learning (54)
      • 실습 프로그램 (4)
      • 주워들은 용어정리 (8)
      • 기타 etc. (8)
    • Computer (120)
      • Utility (21)
      • Windows (31)
      • Mac (4)
      • Ubuntu, Linux (60)
      • NAS (2)
      • Embedded, Mobile (2)
    • IT, Device (41)
      • 제품 사용기, 개봉기 (14)
      • 스마트 체험단 신청 (27)
    • Wish List (3)
    • TISTORY TIP (5)
    • 미분류. 수정중 (1)

태그목록

  • 큐슈
  • 크롬
  • 후쿠오카
  • utility
  • matlab function
  • random variable
  • Deep Learning
  • portugal
  • 갤럭시노트3
  • 칼로리 대폭발
  • 스마트체험단
  • SVM
  • Computer Tip
  • 매트랩
  • matlab
  • 딥러닝
  • function
  • review
  • 매트랩 함수
  • 오봉자싸롱
  • LIBSVM
  • 일본
  • ColorMeRad
  • 에누리닷컴
  • DSLR
  • 포르투갈
  • ReadString
  • CStdioFile
  • DeepLearning
  • Convolutional Neural Networks

달력

«   2025/12   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
12-16 00:41

LATEST FROM OUR BLOG

RSS 구독하기

BLOG VISITORS

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015 Socialdev. All Rights Reserved.

티스토리툴바