Lang/๐ Python (14) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ๐ Python * PCM(raw data) ๋น /๋ฆฌํ ์๋์ ๋ณํํ๊ธฐ " PCM(raw binary) ๋ฐ์ดํฐ์ ์ ์ฅ ๋ฐฉ์์ ๋ณ๊ฒฝํ๊ณ ์ถ์ต๋๋ค! " ์กฐ๊ธ ๋ ์์ธํ ๋งํ์๋ฉด, Big endian ํ์์ผ๋ก ์ ์ฅ๋ PCM ๋ฐ์ดํฐ๋ฅผ Little endian ์ ์ฅ ํ์์ผ๋ก ๋ฐ๊พธ๊ณ ์ถ์๋ค. ๋๋ถ๋ถ ๊ธฐ๋ณธ์ ์ผ๋ก( ์๋์๋ ์์ ๐คฃ ) Little endian ํ์์ผ๋ก ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋๋ฐ, ์ผ๋ณธํ์ฌ์์ ์ ๊ณตํ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ ๊ธฐ๋ณธ ํ์์ด Big endian์ด์ฌ์ผ ํ๋จ๋ค... ๐ฑ ์ธํฐ๋ท ๊ฒ์์ ํ์ ๋ Int ํ ๋ฐ์ดํฐ๋ฅผ Binery ํ์ผ๋ก ๋ฐ๊พธ๋ฉด์ Big ๋๋ Little endian ํ์์ ์ ํํ๋ ์์๋ ๋ง์ด ๋์์ผ๋, ๋ด ๊ฒ์ ์ค๋ ฅ์ด ๋ถ์กฑํ ํ์ธ์ง Raw data๋ฅผ ์ฝ์ด์ ์ด๋ฅผ ๋ฐ๊พธ๋ ์์๋ ์ฐพ์ง ๋ชปํ๋ค. ํน์ ๋ค๋ฅธ ๋ฐฉ๋ฒ ์์๋ฉด ์ฝ๋ฉ๋ ๋จ๊ฒจ์ฃผ์ธ์ ๐ง ํด์ ํ์ฌ ์์ฌ๋ถ.. โ Solved * [Ubuntu] Crypto install Error and How to Install with Python ์ํธํ๋ฅผ ํด๋ณด๊ธฐ์ํด Cryto๋ฅผ ์ค์นํ๋ ค๊ณ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ณค๋๋ ์ ๋ฐ Error๋ฅผ ๋ด๋ฟ์ผ์ จ๋ค.. $ pip install pycryto Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-LL3mve/pycrypto/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Hz4VaT-record/install-record.txt --single-version-exter.. ๐ Python * Message ์ํธํ AES128, HMAC 1. Root๋ก ์ ์ํ๋ค. $ sudo su root 2. ์ํธํ์ ํ์ํ Module์ ์ค์นํ๋ค. โ 2020/03/09 - [SW/๐ Python] - โ Solved * [Ubuntu] Crypto install Error and How to Install with Python 3. ์ํธํ, ๋ณตํธํ์ ๋ํ ์ฝ๋ฉ ๊ฐ๋จ ์ค๋ช ์๋ ์ ์ฒด ์ฝ๋๊ฐ ์์ต๋๋ค! A. import module B. HMAC hash C. iv ์์ฑ D. ๋ณตํธํ E. ์ํธํ F. ์คํ ์ ์ฒด์ฝ๋ # -*- coding: utf-8 -*- import hmac, binascii import Crypto.Random from Crypto.Cipher import AES def gen_sha256_hashed_key_salt(key): .. ๐ Python * MySQLdb ๋ชจ๋ ์ค์น MySQL ์ค์น๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ํ .. ์ ์๋๋ค.. ์๋๋ $ pip3 install MySQL-python3 ํ๋ฉด ๋์ผํ๋๋ฐ ์ค์น๊ฐ ์๋๋ค!! ๋ง๋ง ์ด์ํ ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ฉด์.. (์บก์ณ๋ฅผ ๋ชปํ..) ๊ทธ๋์ ์ฐพ์๋ณด๋ ์์กด์ฑ ํจํค์ง๊ฐ ์์ด์ ๊ทธ๋ฐ ๊ฒ์ผ๋ก ํ์ธ๋์๋ค. ์์กด์ฑ ํจํค์ง๋ฅผ ๊น์์ฃผ๊ณ pip๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๊ทธ๋ฅ apt-get์ผ๋ก ์์์ ํ๋๋ก ํ ์ ์๋ค. ๋ ๊ฐ์ง ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์ - ๋ง์ฝ ๋ฒ์ ์ด 2.X์ธ ๊ฒฝ์ฐ์๋ python3๋์ python์ ์ ์ด์ ์ค์นํด ์ฃผ๋ฉด ๋๋ค. 1. apt-get ๋ช ๋ น์ด ์ฌ์ฉ $ apt-get install python3-mysqldb 2. ํจํค์ง ์ค์น ํ pip ๋ช ๋ น์ด ์ฌ์ฉ A. ์์กด์ฑ ํจํค์ง ์ค์น $ apt-get install python3-de.. ๐ Python * Linux(Ubuntu) ํ๊ฒฝ๋ณ์ ์ฝ๋๋ก ๊ฐ์ ธ์ค๊ธฐ 1. ํ๊ฒฝ๋ณ์ ์ ์ฅํ๊ธฐ - Terminal ์ฐฝ์์ export command๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค. $ export ๋ณ์๋ช =๊ฐ - ํ๊ฒฝ๋ณ์ ์ญ์ ๋ unset command๋ฅผ ์ด์ฉํฉ๋๋ค. $ unset ๋ณ์๋ช 2. Python์์ ๋ถ๋ฌ์ค๊ธฐ - os.environ๋ os.getenv ๋ฅผ ์ด์ฉํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. environ์ ํด๋น ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ ERROR ๋ฅผ ๋ฐ์์ํค๊ธฐ ๋๋ฌธ์ getenv ๋ฅผ ์ฌ์ฉํ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค. getenv๋ ํด๋น ๋ณ์๊ฐ ์์ ๊ฒฝ์ฐ NONE ์ returnํฉ๋๋ค. import os print('\ngetting_system_value.py {}\n'.format('-'*20)) # ================================== # fi.. ๐ Python * socket ์ฐ๊ฒฐ + ๋ฌธ์์ด ์ ์ก SERVER 1. ๋จผ์ ํต์ ํ ์์ผ์ ๊ตฌ์กฐ๋ฅผ ์์ฑํฉ๋๋ค. class SocketInfo() : HOST='' #HOST์ ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฐ๋ฅํ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ์๋ฏธํ๋ค. PORT=1024 #๋ ๋๋ฐ์ด์ค๊ฐ ๋ง๋ ์ง์ ์ ์ ํด์ค๋ค๊ณ ์๊ฐํ๋ฉด ํธํ ๊ฒ ๊ฐ๋ค. #ํฌํธ๋ฒํธ๋ ์๋ฌด๊ฑฐ๋ ํด๋ ์๊ด์์ผ๋ ์ด๋ฏธ ์ ํด์ ธ ์๋ ํฌํธ๋ฒํธ๋ ์ฌ์ฉํ๋ฉด ์๋๋ค. # HTTP, FTP ๋ฑ์ ์ง์ ํฌํธ๋ฒํธ ์ฌ์ฉ ๋ถ๊ฐ BUFSIZE=1024 #์์ผ์ด ํ๋ฒ์ ๋ฐ์์ฌ ์ ์๋ ์ฉ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค. #์ต๋ 1024 byte๊น์ง๋ง ์ ๋ฌ ๋ฐ๊ฒ ๋ค. ADDR=(HOST, PORT) #ํ์ server์์ bind ํจ์๋ฅผ ์ฌ์ฉํ ๋ bind ํจ์์ ์ธ์ ๊ฐ์ด ( IP, PORT ) ์ด๊ธฐ ๋๋ฌธ์ #๊ทธ๋ฅ ํ๋๋ก ํฉ์ณ์ค ๊ฒ์ด๋ค. ํ์ผ๋ก .. ๐ Python * MQTT module paho๋ฅผ ์ด์ฉํ MQTT ํต์ ์ค์นํ๊ธฐ 1. Download $ pip install paho-mqtt 2. MQTT ํต์ $ sudo git clone https://github.com/eclipse/paho.mqtt.python.git $ cd org.eclipse.paho.mqtt.python.git $ sudo python setup.py install - ์ฒ์ ๋ช ๋ น์ด๋ฅผ ์ณค์ ๋ git์ ์ค์น๋ผ๊ณ ํ๋ฉด ์ค์น ํ ์งํํ์ ์ผ ํฉ๋๋ค. ( ์น์ ํ๊ฒ ๋ช ๋ น์ด ๊ฐ๋ฅด์ณ ์ค์ ) - ๋์ ์ root ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ์๊ณ ์์ ๋ช ๋ น์ด๋ฅผ ์ณ์ฃผ์ธ์. - ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ์ ๊ฒฝ์ฐ ์์ ๋ช ๋ น์ด์์ ์ ์ํ ์์น(org.eclipse.paho.mqtt.python.git)์ ๊น๋ฆฌ์ง ์์ setup.py ํ์ผ์ด ์๋ ๊ณณ์ผ๋ก ์ฐพ์๊ฐ์ต๋๋ค. ๊ทธ๋ฅ ํ ์์น์์.. ๐ Python * ๋ฌธ์ ↔ ์์คํค์ฝ๋ ๋ณํํ๊ธฐ 1. ord() - ๋ฌธ์๋ฅผ ์์คํค์ฝ๋๋ก ๋ณํํ๊ธฐ print ord("A") #65 print ord("B") #52 print ord(" ") #32 - ๋ฌธ์์ด์ ์์คํค์ฝ๋๋ก ๋ณํํ๊ธฐ for in "hi everyone": print ord(i), #๊ฐํ์ ํ์ง ์๊ธฐ ์ํด print() ๋ค์ ,๋ฅผ ๋ถ์์ต๋๋ค! #104 105 32 101 118 101 114 121 111 110 101 2. chr() - ์์คํค์ฝ๋๋ฅผ ๋ฌธ์๋ก ๋ณํํ๊ธฐ print chr("84") #T print chr("36") #S print chr("74") #J ๐ Python * ์/ํ์, ๋์ผ ํด๋ ๋ด ๋ชจ๋ from, import ํ๋ ๋ฐฉ๋ฒ --__init__.py -- file1.py -- file2.py +-- dir1 -- __init__.py -- dir1_file1.py -- dir1_file2.py +-- dir2 -- __init__.py -- dir2_file1.py -- dir2_file2.py +-- document -- document_file1.txt 1. ์ฐธ์กฐํ ๋ชจ๋ ๋ฐ ํ์ผ์ด ์๋ dir์ __init__.py ํ์ผ์ ์์ฑํด ์ค๋ค. ํ์ผ ์์ ์๋ฌด ๋ด์ฉ์ด ์์ด๋ ์๊ด์๋ค. ๊ทธ๋ฅ dir ์์๋ค๊ฐ __init__.py ๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ํ์ผ์ ์์ฑํด์ค์ผ, Python์ด ์์น๋ฅผ ์ฐพ์๊ฐ ์ ์๋ค. 2. ๋ค๋ฅธ ๋ชจ๋ ์ฐธ์กฐ ( ํ์ ํด๋ ๋ด ํ์ผ, ๋์ผ ํด๋ ๋ด ํ์ผ ์ฐธ์กฐ ) #dir1_file1.py ๋ฅผ .. ๐ Python * ํ์ ๋น๊ต / ํ๋ณํ 1. ํ์ ํ์ธ ๋ฐฉ๋ฒ type(์ธํ) - ์ธํ(input)๋ ๊ฐ์ type์ ๋ฐํ 2. ์ธ์คํด์ค ๋น๊ต ๋ฐฉ๋ฒ isinstance(์ธํ, ํ์ ) - ์ธํ(input)์ผ๋ก ๋ฃ์ ๊ฐ์ด ์ ๋ ฅํ ํ์ ์ธ์ง ๊ฒ์ฌํ์ฌ boolean(true/false)๋ฅผ ๋ฐํ 3. ํ๋ณํ ๋ฐฉ๋ฒ dict(๊ฐ) # ๋์ ๋๋ฆฌ ํ์ผ๋ก ํ ๋ณํ str(๊ฐ) # ๋ฌธ์์ด ํ์ผ๋ก ํ ๋ณํ int(๊ฐ) # ์ซ์ํ์ผ๋ก ํ ๋ณํ ๐ Python * code๋ก Ubuntu file, directory ์ญ์ ํ๊ธฐ 1. ํ์ผ์ ์ง์ธ ๋ ๐ os.remove() import os os.remove(๊ฒฝ๋ก) - path๊ฐ ๋๋ ํ ๋ฆฌ(ํด๋)์ธ ๊ฒฝ์ฐ OSError๊ฐ ๋ฐ์ํฉ๋๋ค. - ํ์ฌ ์ฌ์ฉ์ค์ธ ํ์ผ์ ์ง์ฐ๋ ค๊ณ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. - windows exception ๋ฐ์ - unix directory entry๋ ์ ๊ฑฐ๋์ง๋ง ํ์ผ ์ฌ์ฉ์ด ๋๋๊ธฐ ์ ๊น์ง๋ ์ ์ฅ์ฅ์น์์ ์ ๊ฑฐ๋์ง ์์ต๋๋ค. 2. ๋น ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ธ ๋ ๐ os.rmdir() import os os.rmdir(๊ฒฝ๋ก) - ๋๋ ํ ๋ฆฌ๊ฐ ๋น์ด์์ง ์์ผ๋ฉด OSError๊ฐ ๋ฐ์ํฉ๋๋ค. 3. ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ๋ฌผ ๋ชจ๋๋ฅผ ์ง์ธ ๋ ๐ shutil.rmtree() import shutil shutil.rmtree(๊ฒฝ๋ก[, ignore_errors[, oneror])] - ๋ค๋ง .. โ Solved * [Python] ํ๊ธ encoding์ด ๋์ง ์์ ๋ โ Linux: Ubuntu 16.04 LTS + 2020/03/03 Python 3.6์ ๋ฌธ์์ด ์ธ์ ๋ฐฉ๋ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก utf-8 ์ด๊ธฐ ๋๋ฌธ์ ๋ค์์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค. ๋ฒ์ ๋ณ๋ก ๊ธฐ๋ณธ ์ธ/๋์ฝ๋ฉ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ์ ๊ด๋ จ๋ ์๋ฌ๊ฐ ๋๋ฉด ์ฐพ์๋ณด๋ ๊ฒ์ด ์ข๊ฒ ๋ค. 1. ํ์ผ์ ๊ฐ์ฅ ์์ ์ฃผ์์ ์ฝ์ ํ๋ค. # -*- coding:utf-8 -*- ์์ ์ฃผ์๋ฌธ ์ดํ์ ๋์ค๋ ๋ชจ๋ ๋ฌธ์์ด์ด UTF-8 ํ์์ด๋ผ๋ ๊ฒ์ ๋ช ์ํ๋ ์ฝ๋์ด๋ค. ๋ณดํต์ ๊ฒฝ์ฐ ์์ ๋ฌธ์ฅํ๋๋ง ์ ์ด์ฃผ๋ ๊ฒ์ผ๋ก ์ ๋ฆฌ๊ฐ ๋๋ค. ํ์ง๋ง, ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ค๋ณด๋ฉด ์ธ๋ถ์์ ๋ถ๋ฌ์จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ importํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ ์ด ๊ฒฝ์ฐ ๋งค๋ฒ ๊ฐ ํ์ผ ์์์ ์ฃผ์์ ์ฝ์ ํด ์ฃผ๊ฑฐ๋ ์๋์ ๋ฐฉ๋ฒ์ main file์๋ค๊ฐ ์ฌ์ฉํด์ค๋ค. 2. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ.. ์ด์ 1 2 ๋ค์