๐๏ธ์ํํธ์จ์ด/๐ปpython
pywin32 ๋ชจ๋ ์๋ฌ - ํด๊ฒฐ๋ฐฉ๋ฒ(feat.Linux)
๋ฆฌ๋ ์ค ํ๊ฒฝ์ ํ์ด์ฌ 3.8 ์ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ก๋ ๋ฐ๋ ์ค์ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค ์๋ ๋์ปค์ ์ด๋ฏธ์ง ํ๋ ๊ตฌ์ด ๋ค์ ๊ฑฐ๊ธฐ ์์์ ํ์ด์ฌ ๊ทธ๋ฅ ์คํํ๋ ๊ฒ๋ณด๋ค ๊ฐ์ํ๊ฒฝ ๋ง๋ค๋ ค๊ณ ํ๋ค๋ณด๋ ์ฝ๋๊ฐ ์ข ๋ณต์กํด์ง๊ธดํ๋๋ฐ,, ๊ฐ์คํ๊ณ ERROR: Could not find a version that satisfies the requirement pywin32==304 (from versions: none) ERROR: No matching distribution found for pywin32==304 ERROR: Could not find a version that satisfies the requirement pywin32==304 (from versions: none) ERROR: No mat..
[python] ์์ ์ ๋ณด ํฌ๋กค๋งํ๊ธฐ(feat.์น๊ตฌ ์ถ์ฒ ์ด๋ฒคํธ)
์คํ๋ฅดํ ์น๊ฐ๋ฐ ์ฝ์ค 3์ฃผ์ฐจ ๊ณผ์ ๊ด๋ จ ๋ด์ฉ - ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ ๊ธฐ๋ฅ์ ์๋ ์ฐธ์กฐ ์์ผ๋, ์ฌ์ฉํด๋ณด์ง๋ ๋ชปํด์ ์์ฌ์ .next_siblings() - ์ด๊ธฐ์ ssl ์ธ์ฆ ๊ด๋ จ์๋ฌ๊ฐ ์์ด์, requests ์์ verify = False ๋ก ์ค์ ํจ ์ฌ์ฉํ ์ฝ๋ # genie ํฌ๋กค๋ง # ๊ฐ์ํ๊ฒฝ conda env sparta_py38 ## ํฌ๋กค๋ง ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ import requests from bs4 import BeautifulSoup # ์์กด์ฑ ์๋ฌ import ssl ## DB # from pymongo import MongoClient headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36..
pycharm ์์ ์๋์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ import ํ๋ ๋ฐฉ๋ฒ
pycharm ์์ ์๋์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ import ํ๋ ๋ฐฉ๋ฒ ctrl + alt + s ๋ฅผ ํด๋ฆญํ๊ณ ์, ๋ค์๊ณผ ๊ฐ์ด ํ๋จ์ python ์น์ ๋ถ๋ถ์์ show import popup ๋ถ๋ถ์ ํด๋ฆญํด์ค๋ค. ๊ทธ๋ฌ๋ฉด ํด๋์ค๋ฅผ ์ ๋ ฅํ๋ฉด, import ์ ํ์ํ ์ฌํญ๋ค์ด ๋ฐ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์ฝ๋ฉ์ ํ ๋, class ๊ฐ import ๋์ง ์์๋ค๋ฉด alt + enter๋ฅผ ๋๋ฌ์ฃผ๋ฉด ๋๋ค.
vscode ์ฅ๊ณ : ์ด๋ฏธ์ง ํ์ผ ์ฒ๋ฆฌ
vscode๋ฅผ ์ด์ฉํ์ฌ, ํ์ด์ ์ธ์ด๋ฅผ ํตํด ์น๊ฐ๋ฐ์ ๋ฐฐ์ฐ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฒ ๋ด์ฉ์ด ์ค๊ตฌ๋๋ฐฉ์ด๋, ์ํด๋ฐ๋๋๋ค..ใ Media ํ์ผ ์ฒ๋ฆฌ ์์ 1. HttpRequest.FILES ๋ฅผ ํตํด ํ์ผ์ด ์ ๋ฌ 2. ๋ทฐ ๋ก์ง์ด๋ ํผ ๋ก์ง์ ํตํด์, ์ ํจ์ฑ ๊ฒ์ฆ์ ์ํํจ 3. FileFiled/ImageField ํ๋์ "๊ฒฝ๋ก(๋ฌธ์์ด)"๋ฅผ ์ ์ฅํจ 4. settings.MEDIA_ROOT ๊ฒฝ๋ก์ ํ์ผ์ ์ ์ฅํจ ์ฝ๋ ๋๋ฒ๊น ์ฝ๋ ์ค๋ช 1 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ## __file__ ์ ํ์ผ์ด import ๋ ๋ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ด๊ณ ์์ -> ์ ๋ ๊ฒฝ๋ก๋ก ๋ฐ๊พธ๊ณ -> dirname์ dirname์ ๋ถ๋ชจ์ ๋ถ๋ชจ ๊ฒฝ..
์ฅ๊ณ : ๊ฒ์ ์ต์ ๋ง๋ค๊ธฐ
์ฅ๊ณ ๋ชจ๋ธ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ, ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ปค์คํฐ๋ง์ด์ง์ ๋ฐฐ์ฐ๊ณ ์๋ค. ๋ค์์ ์ผ๋ถ ์ค์ต์ ํ๊ธฐ ์ํ ์ฝ๋ ๋ด์ฉ์ด๋ฉฐ, ํํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ด์ฉ์ด๋ค. admin.py ์์์ ์ผ๋ถ ์ฝ๋ @admin.register(Post) ## Wrapping(๊ฐ์ธ๋ ๋ฐฉ๋ฒ) - ๊ฐ์ผ ๋์์ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ ์ ์์ class PostAdmin(admin.ModelAdmin): #2. ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ฃผ๊ณ ์ถ์๋ list_display = ['id', 'message', 'message_length','is_public','created_at', 'updated_at'] # list_display ๋ผ๋ ์์๋ฐ์ ๊ฐ์ฒด๋ก, ๋ณด์ฌ์ง๋ ๊ฒ์ ๋ด๋น list_display_links = ['message'] # ๋งํฌ๊ฐ ๊ธฐ๋ณธ id์ ..
ํ์ด์ฌ ๋ฒ์ญ ํ๋ก๊ทธ๋จ (googletrans ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
ํ์ด์ฌ ๊ฐ์ํ๊ฒฝ conda ์ด์ฉ : 3.7๋ฒ์ ํธํ googletrans๋ผ์ด๋ธ๋ฌ๋ฆฌ : 4.0.0-rc1 ์ผ๋ก ๊ตฌ์ฑํ๋ฉด ์๋ฌ ๋์ง ์๊ณ ์๋ ์๋จ ํ์ด์ฌ์ผ๋ก ๊ตฌ๊ธ์ ๋ฒ์ญ API๋ฅผ ์ด์ฉํ์ฌ ๋ฒ์ญ์ ํด๋ณผ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ๋จ ํ๋ฌ์ค ํ : ์ฃผํผํฐ ๋ด์ฉ์ html๋ก ๋ณ๊ฒฝ์ ์ํ ์ ์ปค๋งจ๋์ฐฝ์ jupyter nbconvert ๋ณํํ ํ์ผ๋ช .ipynb --to html In [1]: print('hello world') hello world ๋ฒ์ญ ๊ด๋ จ๊ธ ¶ ์ฐธ๊ณ : https://blockdmask.tistory.com/540 In [2]: import googletrans In [3]: translator = googletrans.Translator() In [5]: str1 = "ํ์ ๋ฌธ์๋ฅผ ์๋๋ฒ์ญํ๋ ํ๋ก๊ทธ..
HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json> ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ
C:\Users\bbeee\Documents\22 Python40projects>conda create -n py37 python=3.7 Collecting package metadata (current_repodata.json): failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://repo.anaconda.com/pkgs/main/win-64/current_repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your ..
[Python] Couldn't find a tree builder with the features you requested: html/parser. Do you need to install a parser library? ์๋ฌ ์์ธ/ํด๊ฒฐ๋ฐฉ์
์์ธ์ฝ๋ import requests from bs4 import BeautifulSoup def get_exchange_rate(target1, target2): headers = { 'User-Agent' : 'Mozilla/5.0', 'Content-Type' : 'text/html; charset=utf-8' } response = requests.get("https://kr.investing.com/currencies/{}-{}".format(target1, target2), headers = headers) content = BeautifulSoup(response.content, 'html/parser') containers = content.find('span', {'data-test':'..
ํ์ด์ฌ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ ์ฝ๋ - ์ซ์ ๋ง์ถ๊ธฐ
์๋ ํ์ธ์ ๊ณต๋ถํ๋ ์ ์ด์ ๋๋ค. ์ซ์๋ฅผ ์ ๋ ฅํ๋ฉด, ์ด๋ฏธ ์์ฑ๋ random ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ randint์ ์ํด ์ ํด์ง ์ ์์์ ์, ์๋์ธ์ง ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ์ด, ์ ๋ต์ ์ฐพ์๊ฐ๋ ์ฝ๋์ด๋ค. try - except ๋ฌธ์ผ๋ก ์ซ์๊ฐ ์๋ ๋ฌธ์๊ฐ ์ ๋ ฅ๋ฐ์์๋๋ฅผ ์๋ฌ ํ์๋ก ๋จ๊ฒ ๊ตฌ์ฑํ๋ค. # ์ซ์ ๋ง์ถ๋ ๊ฒ์ import random random_number = random.randint(1, 100) # ์ ์๊ฐ ๋ฐํ game_count = 1 while True: try: my_number = int(input("1~100 ์ฌ์ด์ ์ซ์๋ฅผ ์ ๋ ฅํ์์ค: ")) if my_number > random_number: print("๋ค์ด") elif my_number < random_number: print("์ ") elif..
ํ์ด์ฌ์์ ์์๋๋ฉด ์ข์ ๊ธฐ๋ฅ๋ค
์๋ ํ์ธ์ ๊ณต๋ถํ๋ ์ ์ด์ ๋๋ค. ์ ๋ฆฌํ๊ณ ์ถ์ ๊ฐ๋ ์ด ์์ด ๊ธ์ ์ฌ๋ฆฌ๊ฒ ๋์์ต๋๋ค. ๋ชฉ์ฐจ 1. enumerate ( for๋ฌธ vs while๋ฌธ) 2. ์ค๋ฅ ๋ฐ ์์ธ ์ฒ๋ฆฌ 3. ํจ์ 4. ํด๋์ค 1. enumerate ํ์ด์ฌ์์ ์์น์ ๊ฐ์ ๋ถ๋ฌ์ฌ ์ ์๋ ์ข์ ๋ ์์ด๋ค while ๋ฌธ์ ๋ฐ๋ก ์กฐ๊ฑด์ด ๋ฐ๋ผ ์ค๊ฒ๋๋ค. ์ฌ๊ธฐ์ a 1 -> 2 ์์๋ ์ํํ๋ค, 3์ด ๋๋ ์๊ฐ fail ์กฐ๊ฑด์ด๋ฏ๋ก ๋๊ฐ๊ฒ ๋๋ค. ๋ค์ 3๊ฐ์ง ๊ฒฝ์ฐ๋ ๋ค๋ฅด์ง๋ง ๋ชจ๋ ๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ๊ณ ์๋ ์ฝ๋์ด๋ค. 2. ์ค๋ฅ ๋ฐ ์์ธ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋ฉด, ๋ค์ํ ์๋ฌ ์ํฉ์ ๋ง์ฃผํ๋ค. ํ์ง๋ง ์ ์ฒด ์ฝ๋๋ฅผ ์คํํ๋๋ฐ ์์ด, ์ค๊ฐ์ ์๋ฌ๊ฐ..