Python
-
파이썬 초기 설정 저장 방식Python/이것저것 파이썬 2022. 10. 25. 13:20
저는 프로그램의 초기 설정들은 저장할 때, pickle을 많이 씁니다. 바이너리 파일이라 유저들이 수정하기 어렵고, 코드는 간결하죠. https://scshim.tistory.com/614 하지만 유저들이 수정하도록 열어두어야할 설정도 있습니다. 이럴 경우에는 ini, json, yaml, xml, toml, py 등을 사용합니다. 가장 많이 알려진 ini 같은 경우는 공식 문서(configparser - 구성 파일 구문 분석기)를 보는 것이 가장 좋습니다. https://docs.python.org/ko/3/library/configparser.html 전체적으론 이런 글을 참고해도 좋겠죠. https://emilkwak.github.io/python-setting-file-ext xml은 공식 문서를..
-
100명의 죄수 문제Python/이것저것 파이썬 2022. 10. 17. 12:38
https://www.youtube.com/watch?v=PE4vLbyOgw0 https://www.youtube.com/watch?v=OIi7FCmTtxc from random import shuffle def find_num(): # 죄수 번호가 들어갈 박스 boxes = {} # 죄수 번호(1~100)를 셔플. nums = [i for i in range(1, 101)] shuffle(nums) # 셔플된 죄수 번호를 하나씩 뽑아 박스에 넣는다. for i, num in enumerate(nums): boxes[i + 1] = num # 각 죄수가 방에 들어가 자신의 번호가 매겨진 박스부터 열어본다. for prisoner in range(1, 101): open_num = prisoner for ..
-
파이썬으로 버전 비교Python/이것저것 파이썬 2022. 10. 6. 13:02
버전을 비교하려면, 어떻게 하는 것이 깔끔할까요? '1.9.1' > '1.10' # True 버전은 숫자와 점으로 구성된 문자열입니다. 이런 코드가 떠오릅니다만.. import doctest def to_int_tuple(a: str) -> tuple[int]: return tuple(int(each) for each in a.split('.')) def compare(a: str, b: str) -> str: """ >>> compare('1.19', '1.10.1') '>' >>> compare('1.1', '1.10.1') '' """ a_tuple, b_tuple = to_int_tuple(a), to_int_tuple(b) if a_tuple == b_tuple: return '==' elif ..
-
django, allauth, socialaccount_set, kakao login, extra_dataPython/초간단 장고 Django 2022. 9. 23. 11:04
{% with account=user.socialaccount_set.first %} UID: {{ account.uid }} nickname: {{ account.extra_data.properties.nickname }} email: {{ account.extra_data.kakao_account.email }} age_range: {{ account.extra_data.kakao_account.age_range }} birthday: {{ account.extra_data.kakao_account.birthday }} birthday_type: {{ account.extra_data.kakao_account.birthday_type }} gender: {{ account.extra_data.kaka..
-
[장고] 그룹, 퍼미션Python/초간단 장고 Django 2022. 9. 22. 23:11
1. 장고에서 그룹을 설정과 권한 관리는 관리자 화면에서 가능하다. 2. 템플릿에서 권한 체크하는 법. Check permission inside a template in Django https://stackoverflow.com/questions/9469590/check-permission-inside-a-template-in-django # {% if perms.app_label.can_do_something %} {% if perms.account.add_email_address %} {% endif %} 관리자 화면에서 권한명을 확인. 공식 문서를 참고하자. https://docs.djangoproject.com/en/4.1/topics/auth/default/#permissions 3. 뷰 함수..
-
Django pagenation paginator.num_pagesPython/초간단 장고 Django 2022. 9. 21. 00:21
Django의 페이지네이션 기능의 자세한 설명은 다음을 참고하시고.. https://wikidocs.net/71240#_2 3-02 페이징 * `[완성 소스]` : [github.com/pahkey/jump2django/tree/3-02](https://github.com/pahkey/jump2django/tr ... wikidocs.net 저자께서 마지막에 이런 숙제를 남겨두셨네요. 지금까지 만든 페이징 기능에 '처음'과 '마지막' 링크를 추가하고 ... def list_view(request): page = request.GET.get('page', '1') px_name = request.GET.get('name', '') if name == '' or name is None: my_list = M..
-
파이썬으로 WOL 매직패킷 쏘기Python/이것저것 파이썬 2022. 9. 16. 08:13
import socket import struct ip = '192.168.0.255' mac = '00-11-22-33-44-55' mac_split = mac.split('-') address = struct.pack( 'BBBBBB', int(mac_split[0], 16), int(mac_split[1], 16), int(mac_split[2], 16), int(mac_split[3], 16), int(mac_split[4], 16), int(mac_split[5], 16), ) magic = b'\xFF' * 6 + address * 16 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKE..
-
[django] shell을 더 편하게 쓰는 법, 장고 ORM을 shell 외에서 사용Python/초간단 장고 Django 2022. 9. 12. 10:27
장고 쉘을 더 편하게 쓰는 법.. 1. ipython을 설치한다. 파이썬 유저라면 다들 노트북을 써보셨을 겁니다. IDE만큼 편하진 않지만.. 맨땅의 헤딩보다는 엄청 편리하죠... 2. 장고 ORM을 shell 외에서 사용 개발 환경 설정에 따라 다르겠습니다만 manage.py 가 있는 디렉토리에서 스크립트를 작성, 실행하는 것이 편할 겁니다. 개별 앱에 관련된 코드를 루트에 두는 게 불편합니다만... 장고 셋업을 한 뒤에야 모델을 import 할 수 있습니다. DB 초기화를 할 때, preset 데이터를 입력할 때, 사용하면 편합니다. import csv import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.set..