牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Python

Pythonで足し算と引き算の式を任意の数だけ作成してみるメモ

code 結果例 Python Playground 息子の足し算のお勉強用(雑なコードだが目的は果たせるのでよしとする) code 例:1~15 の数での足し算と引き算の式を10個作成する from random import choice def random_tashizan_and_hikizan(min, max, amount=10): exp_l…

Pythonで九九をランダムに任意の数だけ表示してみるメモ

code 結果例 Python Playground 息子の九九のお勉強用 code from random import shuffle def random_kuku(start, end, amount=1): kuku_list = [] for i in range(start, end + 1): for j in range(2, 10): kuku_list.append(f"{i}*{j}={i*j}") if len(kuku_…

Django の models.CharField で choices の値を日本語で取得するメモ

毎回忘れるこれ… class ChainsawMan(models.Model): ATTRIBUTE_CHOICES = ( ('human', '人間'), ('devil', '悪魔'), ) attribute = models.CharField(choices=ATTRIBUTE_CHOICES ) get_{field_name}_display() でとれる >>> denji = ChainsawMan.objects.las…

Django で csv ダウンロード を utf8 の BOM 付きにするメモ

(django1.11, python3.7.x) open() 使わずに HttpResponse でやる場合のやつ import csv import io from django.http import HttpResponse def some_view(request): # Create the HttpResponse object with the appropriate CSV header. response = HttpResp…

Pythonで小2算数のくり下がりのあるひき算のひっ算の問題を生成するメモ

前置き コード (python3.7.x) 前置き この動画のような問題をいくつか生成してみる 小2算数 くり下がりのあるひき算のひっ算 コード 雑に書いちゃったから後で見直すかも ちなみに最大2桁 import random def get_num(): num_list = range(10) one1 = random.…

Pythonでランキングで同順位を考慮して順位を取得するメモ

(python3.7.x) {id:score} の入った配列 id_score_list の id:2 が score 降順で順位が何番めなのかを取得したいメモ id_score_list = [{3: 180}, {5: 150}, {10: 150}, {1: 120}, {8: 120}, {9: 120}, {2: 110}, {7: 90}, {6: 70}, {4: 60}] target_id = 2 …

Pythonでダミーのオブジェクトのプロパティで hoge.comment="hello" みたいな数値を取りたい時のメモ

(python3.7.x) 動作検証的なのでたまにささっと使いたくなるのでメモ class ObjDummy: def __init__(self, d): for k, v in d.items(): setattr(self, k, v) hoge = ObjDummy({'no': 1, 'comment': 'hello'}) print(hoge.no) print(hoge.comment) # -> 1 # ->…

リクエストの Authorization ヘッダに入れるBasic認証の情報をbase64でエンコードするメモ

(python3.7.x) client_hoge_id:hoges1234Fuga5678Mogera をエンコードする例 import base64 client_id = 'client_hoge_id' client_secret = 'hoges1234Fuga5678Mogera' client_id_client_secret = base64.b64encode('{}:{}'.format(client_id, client_secret…

Django の Templates で表示している画面のURLを取得するメモ

(Django2.2) urlの例 https://example.com/foobar/?foo=bar {{ request.get_full_path }} /foobar/?foo=bar {{ request.path }} /foobar/ {{ request.build_absolute_uri }} https://example.com/foobar/?foo=bar 参考リンク https://docs.djangoproject.com…

Python の配列でインデックスが存在するかどうか確認するメモ

(python3.6.1) >>> a = range(13) >>> a range(0, 13) >>> list(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> a[12] 12 >>> a[13] Traceback (most recent call last): File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/…

Django の BinaryField に manage.py shell でローカルのファイルをバイナリで入れるメモ

models.py manage.py shell 参考 (Python3.6.1, Django==1.11.20, PyMySQL==0.9.3) models.py class HogeFile(models.Model): binary_file = models.BinaryField() manage.py shell $ python manage.py shell_plus >>> from pathlib import Path >>> file = …

Python と Javascript の replace() の違いメモ

python javascript 最初の一つしか置換されない すべて置換するには正規表現を使う python In [1]: 'hoge,fuga,moge,'.replace(',', '') Out[1]: 'hogefugamoge' javascript 最初の一つしか置換されない 'hoge,fuga,moge,'.replace(',', '') //-> "hogefuga,…

Django の annotate の集計で group by でハマったのでメモ

結果的に正解はこんな感じ from django.db.models import Count hoges = Hoge.objects.filter(fuga__regex='/mogera/[0-9]+/$').values('fuga').annotate(num_fuga=Count('fuga')).order_by('-num_fuga') [hoge['num_fuga'] for hoge in hoges] values 挟ま…

Javascript で Python の 『[n for n in range(10)]』 みたいなことをやるメモ

python In [1]: [n for n in range(10)] Out[1]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] javascript (ES6以降) [...Array(10).keys()] > (10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 参考リンク JavaScript function similar to Python range() - Stack Overflow

Django の views.pyで url の id とかパラメータとか取得する場合のメモ

よく忘れるんでメモ url の id とか url(r'^foo/(?P<pk>\d+)/$', FooView.as_view(), name='foo'), class FooView(TemplateView): template_name = 'index.html' def get_context_data(self, **kwargs): context = super(FooView, self).get_context_data(**kwar</pk>…

Python の HTTPライブラリ Requests で動作確認するための簡単なレスポンスのダミーを作るメモ

(python3.6) 要望 apiを投げたレスポンスをゴニョゴニョして処理するあたりの動作確認したいので states_code と response.json() を偽装したい。 コード import respons class ResponseDummy: def __init__(self, status_code, data): self.status_code = s…

Python で all([]) が True になる件のメモ

現象 理由 Python のドキュメント に書いてあるけど... 論理学の「空虚な真」というやつだそうで 現象 (python3.6) >>> all([True, False]) False >>> all([True, True]) True >>> all([]) True えええぇーー 理由 Python のドキュメント に書いてあるけど..…

特定のディレクトリを監視する Python スクリプトを Ubuntu の systemd でデーモン化するメモ

こんな感じでやった気がするメモ 環境 Install Python ライブラリ 特定のディレクトリを監視する python スクリプト 実行権限 スクリプトをデーモン化 /etc/systemd/system/hoge.service systemctl で登録・自動起動・実行・確認 動作確認 自動起動を解除す…

direnv で virtualenvwrapper の workon hoge を自動でやるメモ

(python3.6) direnv 使うことにしたのでメモ 前提 virtualenv と virtualenvwrapper はインストール&設定済みの前提で direnv もインストール&設定済み mkvirtualenv hoge しておく .envrc source ~/.virtualenvs/hoge/bin/activate 確認 シェルで .envrc …

DjangoのwebサーバからapiサーバーにajaxでPOSTしたら『Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’』とかなった場合のメモ

(Django1.11.11 + django rest framework3.6.1, jquery-3.2.1) ajaxでPOSTした時のエラー クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、%1$S にあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Al…

mail.log の 日本語の Subject が文字化けしちゃって Python でデコードしたい場合のメモ

毎回忘れるんでメモ Django でメール送信内容の確認したい時に EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' とかして log 見たら日本語の Subject が文字化けしちゃってるのを修復したい Subject: =?utf-8?b?44GT44KT44Gr44Gh44KP …

Javascript と Python の真偽値の違いメモ

javascript >> Boolean(0 > 0) false >> Boolean(1 > 0) true >> Boolean(0) false >> Boolean(1) true >> Boolean('0' > 0) false ;; ここ違う >> Boolean('1' > 0) true >> Boolean('0') true >> Boolean('1') true python >>> bool(0 > 0) False >>> bool…

Django で設定の値をメソッドにデコレータつけて一時的に変更してみるメモ

>>> from django.conf import settings >>> print settings.LOGIN_URL "/login/" >>> from django.test.utils import override_settings >>> @override_settings(LOGIN_URL='/other/login/') ... def hoge(): ... print settings.LOGIN_URL ... >>> hoge() "…

Python で response に status_code とか存在するか確認するメモ

(python2.7.13) response = requests.get(hoge) とかして response に status_code とか無い場合に response.status_code とかするとエラーになるので確認 >>> hasattr(response, 'status_code') True

Python で『AttributeError: 'tuple' object has no attribute 'items'』とかなった場合のメモ

(python2.7.13) コード 実行結果 原因 コード def hoge(fuga): return { 'hoge': '{}'.format(fuga) }, print hoge('FUGA').items() 実行結果 AttributeError: 'tuple' object has no attribute 'items' 原因 戻り値のところ最後に間違ってカンマ入っちゃっ…

Python で16進数の範囲で文字を表示するメモ

(python2.7.13) 0x20-0x7e の範囲を表示したい >>> [chr(x) for x in range(0x20, 0x7e + 0x01)] [' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=…

Pythonでファイルをダウンロードしてみるメモ

(python2.7.13) 要 $ pip install requests # coding=utf8 import os import shutil import requests def download_file(url, file_dir): if not os.path.exists(file_dir): os.makedirs(file_dir) response = requests.get(url, stream=True) if response.s…

Pythonで作成日時に期限秒を足してみるメモ

(python2.7.13) 要 $ pip install python-dateutil In [1]: from datetime import datetime In [4]: expires_sec = 604799 # second In [5]: expires_sec * 1.0 / 60 / 60 Out[5]: 167.99972222222223 # hour (約7日) In [6]: from math import floor In […

Pythonでdatetimeオブジェクトとunixtimeのメモ

(python2.7.13) In [1]: from datetime import datetime In [2]: now = datetime.now() In [3]: now Out[3]: datetime.datetime(2017, 12, 12, 15, 42, 57, 966893) In [4]: int(now.strftime('%s')) Out[4]: 1513060977 In [5]: datetime.fromtimestamp(151…

Pythonとipinfo.ioのapiでIPの地域を調べるメモ

ipinfo.io api code 結果 リンク ipinfo.io api ipinfo.io の apiは1日1000回まで無料 Paid Plans - ipinfo.io code (python2.7.11) 要 $ pip install requests # coding=utf8 import requests def get_country(ips): result = [] for ip in ips: response =…