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

IT-Engineering/Python14

ํŒŒ์ด์ฌ Python์œผ๋กœ mysql ์—ฐ๊ฒฐํ•˜๊ธฐ(mysql-connector-python ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•) ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ํŒŒ์ด์ฌ(Python)์„ ํ™œ์šฉํ•˜์—ฌ ๋ณธ์ธ PC์— ์„ค์น˜๋œ mysql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜์—ฌ ์—ฐ๋™๋œ DB์— ์งˆ์˜๋ฌธ(์ฟผ๋ฆฌ๋ฌธ)์„ ๋‚ ๋ ค์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋Š” ๊ฒƒ๊นŒ์ง€ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. MySQL ์„ค์น˜ ๋ณธ ํฌ์ŠคํŒ…์˜ ๋‚ด์šฉ์€ MySQL์ด ์„ค์น˜๋œ ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค(์ด ํฌ์ŠคํŒ…์˜ ๊ฒฝ์šฐ 5.7๋ฒ„์ „ ์‚ฌ์šฉ). ๊ทธ๋Ÿผ์—๋„ ์„ค์น˜ ๋งํฌ๋ฅผ ์ฒจ๋ถ€ํ•˜๋‹ˆ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. mysql 5.7 ์„ค์น˜ ํŒŒ์ผ ๋งํฌ: https://dev.mysql.com/downloads/windows/installer/5.7.html ๋‹ค๋ฅธ ๋ฒ„์ „์„ ๊ณ ๋ฅด๊ณ  ์‹ถ์œผ์‹œ๋ฉด: https://dev.mysql.com/downloads/installer/ 2. mysql-connector-python ์„ค์น˜ ํŒŒ์ด์ฌ(Python)์—์„œ mysql์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด.. 2021. 12. 31.
Anaconda ์•„๋‚˜์ฝ˜๋‹ค 64 bit ํ™˜๊ฒฝ์—์„œ 32 bit ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์•„๋‚˜์ฝ˜๋‹ค(Anaconda) 64bit๋ฅผ ์„ค์น˜ ํ›„์— 32bit ํŒŒ์ด์ฌ๊ณผ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋ฅผ ์œ„ํ•ด ๋ณธ ํŽธ์„ ์ค€๋น„ํ–ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํ‚ค์›€์ฆ๊ถŒ API๋‚˜ ๋Œ€์‹ ์ฆ๊ถŒ API์™€ ๊ฐ™์ด ์ฆ๊ถŒ์‚ฌ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ conda ํ™˜๊ฒฝ์—์„œ ๋งž๋‹ฅ๋œจ๋ฆฌ๋Š” ๋ฒ„๊ทธ๋‚˜ ์—๋Ÿฌ๋“ค์ด 64bit ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฒฐ๊ตญ 32bit๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. Traceback (most recent call last): File "d:\ProgramData\Anaconda3\lib\site-packages\win32com\client\dynamic.py", line 89, in _GetGoodDispatch IDispatch = pythoncom.connect(IDispatch) pywintypes.com_error: (-2147.. 2020. 12. 11.
ํŒŒ์ด์ฌ(Python) ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ, ์—†์œผ๋ฉด ๋งŒ๋“ค๊ธฐ ํŒŒ์ด์ฌ(Python)์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ(directory)๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ฐ”๋กœ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์—†๋Š”์ง€ ์ฒดํฌ๋ฅผ ํ•˜๊ณ  ๋งŒ๋“ค๋ฉด ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๊ณ , ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ž˜ ๋งŒ๋“ค์–ด ๋‘๋ฉด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋“  ์—†๋“  ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•˜๋ฉด ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๊ฑฐ๋‘์ ˆ๋ฏธํ•˜๊ณ  ๋ฐ”๋กœ ์•„๋ž˜์˜ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ง์ ‘ ๋งŒ๋“  ํ•จ์ˆ˜์ด๋‹ˆ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค. import os def createDirectory(directory): try: if not os.path.exists(directory): os.makedirs(directory) except OSError: print("Error: Failed to create the directory.") try, except ๊ตฌ๋ฌธ์„ ํ†ตํ•ด ํ•œ์ธต ๋” ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ํ•จ์ˆ˜์ด๋‹ˆ ๋ง‰ ๊ฐ€์ ธ.. 2020. 10. 20.
ํŒŒ์ด์ฌ ๋‚ ์งœ-์‹œ๊ฐ„ ์‚ฌ์šฉ๊ณผ ๊ณ„์‚ฐ์— ์œ ์šฉํ•œ datetime ๋ชจ๋“ˆ ํ™œ์šฉ ์˜ˆ์‹œ ๋ชจ์Œ ํŒŒ์ด์ฌ์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋“  ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋“  pandas์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋“  ๋‚ ์งœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์ œ๋ฒ• ์žˆ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ”ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” datetime ๋ชจ๋“ˆ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ๋“ค์„ ๋…ธํŠธ๋ถ์—์„œ ์ž‘์—…ํ•œ ๋‚ด์—ญ์„ ์ญ‰ ๋ถ™์—ฌ์„œ ๋ณด์—ฌ์คŒ์œผ๋กœ์จ datetime์˜ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ํ™œ์šฉ์„ ๋•๊ณ ์ž ํ•œ๋‹ค. datetime๋งค๋‰ด์–ผ์„ ํ†ตํ•ด ๋”์šฑ ์ž์„ธํžˆ ํ™•์ธํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํญ๋„“๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋Š” ์•„๋ž˜์—์„œ ๋ณด์ธ ์˜ˆ์‹œ๋“ค๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฆฌ๋ผ ๋ณธ๋‹ค. datetime ๋ชจ๋“ˆ ์‚ฌ์šฉํ•˜๊ธฐยถ In [2]: import datetime as dt now()ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์‹œ๊ฐ„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐยถ In [3]: current_time = dt.datetime.now() In [4.. 2020. 9. 22.
Python ๋ฆฌ์ŠคํŠธ(list) csv ํŒŒ์ผ๋กœ ์ฝ๊ณ  ์“ฐ๊ธฐ(๋ถˆ๋Ÿฌ์˜ค๊ธฐ, ์ €์žฅํ•˜๊ธฐ) ๋”ฅ๋Ÿฌ๋‹ ๋“ฑ AI๊ด€๋ จ ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด csv๋ฅผ ๊ฐ€์ ธ์™€์„œ ์—ด๊ณ  ์ž‘์—…์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ œ๋ฒ• ๋งŽ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋ง‰์ƒ ์ง์ ‘ ๋งŒ๋“  ์ฝ”๋“œ์—์„œcsv๋ฅผ ๋ฝ‘์•„๋‚ด๊ณ  ๊ทธ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ๋“ค์ด๋ ค๋‹ค ๋ณด๋ฉด ์ฝ”๋“œ ์ž‘์„ฑ์ด ํ—ท๊ฐˆ๋ฆด ๋•Œ๊ฐ€ ์žˆ๋”ฐ. ๊ทธ๋ž˜์„œ ํŠน์ • ์˜ˆ์ œ๋ฅผ ๋งŒ๋“ค์–ด csvํŒŒ์ผ์„ ์ฝ๋Š” ๊ณผ์ •๊ณผ ์“ฐ๋Š” ๊ณผ์ •์„ ๊ฐ๊ฐ ๋ณด์ด๋„๋ก ํ•˜๊ฒ ๋‹ค. Python ๋ฆฌ์ŠคํŠธ csv๋กœ ์ €์žฅํ•˜๊ธฐ ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์ธ csv ๋ชจ๋“ˆ์„ importํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋Š” ๋‚ ์งœ ๋ฐ์ดํ„ฐ, ์ •์ˆ˜ ๋ฐ์ดํ„ฐ, ๋ถ€๋™์†Œ์ˆ˜์  ์ž๋ฃŒํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ๋‹ค. ์—‘์…€๋กœ ๊ทธ๋ฆฐ๋‹ค๋ฉด ์—ด ๋ฐฉํ–ฅ์œผ๋กœ ๊ทธ๋ฆด ๊ฒƒ ๊ฐ™์ง€๋งŒ, ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ํ–‰ ๋ฐฉํ–ฅ์œผ๋กœ ๋‚˜์—ด๋˜์—ˆ๋‹ค. # csv ๋ชจ๋“ˆ importํ•˜๊ธฐ import csv # list ๋งŒ๋“ค๊ธฐ date = ['200801','200802','200803','200804','20080.. 2020. 8. 7.
Python์œผ๋กœ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํŒŒ์ผ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฝ”๋“œ ๊ตฌํ˜„ ํŒŒ์ด์ฌ(Python)์œผ๋กœ ์‹ค์‹œ๊ฐ„(real-time) ๋กœ๊ทธ(log) ํŒŒ์ผ ๋ชจ๋‹ˆํ„ฐ๋ง(monitoring) ์ฝ”๋“œ ๊ตฌํ˜„ Python์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๊ณ„์†ํ•ด์„œ ๋กœ๊ทธ๋ฅผ ์ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๋•Œ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์€ ์ฐํžˆ๋Š” ๋กœ๊ทธ๋ฅผ ๊ณ„์†ํ•ด์„œ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๊ณ ์„ฑ๋Šฅ HPC์—์„œ ์ž‘์—…์„ ๋Œ๋ฆฌ๊ณ  ํ•ด๋‹น PC์—์„œ logํŒŒ์ผ์„ ์ถœ๋ ฅํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ ์žฅ๋น„์ธ ๋‚ด ์ปดํ“จํ„ฐ์—์„œ ํ•ด๋‹น logํŒŒ์ผ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ด๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ๋˜๊ฒ ๋‹ค. ๋จผ์ € ๋กœ๊ทธํŒŒ์ผ์„ ์ฐ๋Š” ์˜ˆ์‹œ์ฝ”๋“œ์ด๋‹ค. logging.py with open("log.txt", "w") as f: for i in range(100): text = "I love sark. %d\n" % i print(text, .. 2020. 7. 30.
Python format ํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ์•ˆ์— ๊ด„ํ˜ธ ๋„ฃ๊ธฐ - ํŒŒ์ด์ฌ ๊ฟ€ํŒ Python formatํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ต‰์žฅํžˆ ํŽธํ•˜๊ฒŒ ๋‹ค์–‘ํ•œ ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์ฒ˜๋Ÿผ { } ์ค‘๊ด„ํ˜ธ ํ‘œ์‹œ์™€ ๊ด„ํ˜ธ ์•ˆ์— :์ „์ฒด์ž๋ฆฌ์ˆ˜.์†Œ์ˆ˜์ ์ž๋ฆฌ์ˆ˜+์˜ต์…˜ ํ˜•ํƒœ๋กœ ํŽธํ•˜๊ฒŒ string์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. homepath = '/home/sark/dev/python/test' this_job = 3 num_job = 10 progress = this_job/num_job job_status = "Running" print(("Path:{}, Job({}/{}), Progress:{:4.2%}, Status:{}") .format(homepath,this_job,num_job,progress,job_status)) ์ถœ๋ ฅ๊ฒฐ๊ณผ Path:/home/sark/dev/python/test, Job(.. 2020. 7. 27.
ํŒŒ์ด์ฌ ํ•จ์ˆ˜๋กœ ํด๋”/๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑํ•˜๊ธฐ(create folder/directory in python) ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ฝ”๋“œ ์ง„ํ–‰ ์ค‘์— ํŒŒ์ผ ๋ณต์‚ฌ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. https://gentlesark.tistory.com/71 ์œ„ ๊ธ€์—์„œ ํด๋”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํŒŒ์ผ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๊ฒฝ์šฐ python์˜ ๋‚ด์žฅ ๋ชจ๋“ˆ os๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํŽธํ•˜๊ฒŒ ํด๋”๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ์— ํ˜„์žฌ ํด๋” ํ•˜์œ„ ํด๋”์— text๋ผ๋Š” ์ด๋ฆ„์˜ ํด๋”๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ํ•˜๋ฉด ๋‹ค์Œ ์ฝ”๋“œ๋กœ ์‹คํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค. import os os.makedirs('./text') ์œ ์—ฐํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด try/catch๊ตฌ๋ฌธ์œผ๋กœ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. path = './text' try: if not os.path.exists(path): os.makedirs(path) e.. 2020. 6. 29.
ํŒŒ์ด์ฌ ํŒŒ์ผ ๋ณต์‚ฌ(Python file copy with 'shutil') ํŒŒ์ด์ฌ์œผ๋กœ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์€ ํ”ํ•˜๊ฒŒ ๋งŽ์ด ํ•œ๋‹ค. ๋•Œ๋•Œ๋กœ ํŒŒ์ผ ์ž…์ถœ๋ ฅ์ด๋‚˜ ํŒŒ์ผ ์ž‘์—… ์ด์ „์— ํŒŒ์ผ์˜ ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋„ ์žˆ๋‹ค. ์ด ๋•Œ ํŒŒ์ด์ฌ์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฆ„์€ shutil ์ด๋‹ค. ํŒŒ์ด์ฌ์—์„œ ํŒŒ์ผ ๋ณต์‚ฌํ•˜๊ธฐ ์‚ฌ์šฉ๋ฒ•๋„ ๊ต‰์žฅํžˆ ๋‹จ์ˆœํ•˜๋‹ค. Linux๊ธฐ์ค€ /home/sark/aa.txt๋ฅผ /home/sark/text/aa.txt๋กœ ๋ณต์‚ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, shutil.copy('/home/sark/aa.txt', '/home/sark/text/aa.txt') ๋งŒ์•ฝ์— ํด๋”๊ฐ€ ์—†๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋‚  ์ˆ˜๋„ ์žˆ๋‹ค. FileNotFoundError: [Errno 2] No such file or directory: './text/aa.txt' ์ด ๊ฒฝ์šฐ์—๋Š” ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ž. ํด๋” .. 2020. 6. 29.