๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ธฐ๋ณธ..