IT-Engineering/Python15 Jupyter Lab ๊ธฐ๋ณธ ์ปค๋ base์์ ๋ค๋ฅธ ์ปค๋๋ก ๋ฐ๊พธ๊ธฐ Jupyter Lab์ base ํ๊ฒฝ์์ ๋์๊ฐ๋๋ฐ, ๋ก์ปฌ ํ๊ฒฝ์์ ๋์ํ๋๋ก ํ๋ ค๋ฉด?conda activate ai๋ฅผ ํ ํ์ jupyter lab์ ์คํ์ํค๋๋ผ๋, Jupyter Lab ์์ฒด๋ ๊ธฐ๋ณธ์ ์ผ๋ก base ํ๊ฒฝ์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์, ์ํ์๋ ๊ฒ์ฒ๋ผ conda ํ๊ฒฝ์ ํ์ฑํํ ํ, Jupyter Lab์ ๊ทธ ํ๊ฒฝ์์ ์คํํ๋ ค๋ฉด ์ถ๊ฐ ์ค์ ์ด ํ์ํฉ๋๋ค.conda ํ๊ฒฝ์์ Jupyter Lab์ ์คํํ ๋ ์๋์ผ๋ก ํด๋น ํ๊ฒฝ์์ ๋๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.*์ฐธ๊ณ ๋ก ์์๋ก ์ ํฌ ํ๊ฒฝ ์ด๋ฆ์ ai ๋ก ํ์์ต๋๋ค. (์ค์ ์ ๊ฐ ์ฐ๊ณ ์๋ conda ํ๊ฒฝ ์ด๋ฆ)1. ipykernel ์ค์น ๋ฐ ๋ฑ๋กJupyter๋ ๊ฐ conda ํ๊ฒฝ์ '์ปค๋'๋ก ์ธ์ํด์ ๊ทธ ํ๊ฒฝ์์ ์ฝ๋๊ฐ ์คํ๋ฉ๋๋ค.. 2024. 9. 29. ํ์ด์ฌ 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. ์ด์ 1 2 ๋ค์