๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ’ปpython

    pywin32 ๋ชจ๋“ˆ ์—๋Ÿฌ - ํ•ด๊ฒฐ๋ฐฉ๋ฒ•(feat.Linux)

    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.์นœ๊ตฌ ์ถ”์ฒœ ์ด๋ฒคํŠธ)

    [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 ํ•˜๋Š” ๋ฐฉ๋ฒ•

    pycharm ์—์„œ ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import ํ•˜๋Š” ๋ฐฉ๋ฒ• ctrl + alt + s ๋ฅผ ํด๋ฆญํ•˜๊ณ ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋‹จ์— python ์„น์…˜ ๋ถ€๋ถ„์—์„œ show import popup ๋ถ€๋ถ„์„ ํด๋ฆญํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ž˜์Šค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, import ์— ํ•„์š”ํ•œ ์‚ฌํ•ญ๋“ค์ด ๋œฐ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ์ฝ”๋”ฉ์„ ํ• ๋•Œ, class ๊ฐ€ import ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด alt + enter๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค.

    vscode ์žฅ๊ณ  : ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ฒ˜๋ฆฌ

    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> ์—๋Ÿฌ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

    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. ์˜ค๋ฅ˜ ๋ฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด, ๋‹ค์–‘ํ•œ ์—๋Ÿฌ ์ƒํ™ฉ์„ ๋งˆ์ฃผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์žˆ์–ด, ์ค‘๊ฐ„์— ์—๋Ÿฌ๊ฐ€..