牌語備忘録 -pygo

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

牌語備忘録 -pygo

Python

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 =…

ipython で実行結果を簡単にファイルに保存したいメモ

(python2.7.13, ipython5.1.0) ipython $ ipython In [1]: %store sum(range(10)) >> hoge.txt Writing 'sum(range(10))' (int) to file 'hoge.txt'. hoge.txt 45 参考リンク How to write the output of ipython command in python text file? - Stack Over…

Tern Link B7 のギア比を考えるメモ

変更検討 13-28Tに変更 11-28Tに変更 フロントを56T (or 58T)に変更 ギア比を計算してみる 追記: ギア比を計算してみる、その2 リンク ある程度カスタマイズしたら平地でトップの7速のみでラクに走れるようになって軽すぎる気がするので検討。 変更検討 標…

Python で xlsx ファイルを読み込んで配列にするメモ

(python2.7.x) Install $ pip install xlrd Source code import xlrd def get_sheet_lines(xlsx_filename, sheet_name, num_of_header_lines=1): book = xlrd.open_workbook(xlsx_filename) sheet = book.sheet_by_name(sheet_name.decode('utf8')) lines = …

Python でランダムにパスワード生成してみるメモ

# coding=utf-8 import random def generate_password(password_length): digits_and_ascii_letters = list('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') ignore_strings = list('lIO0') password_strings = [s for s in digits_and_…

Python のクラスを継承した時にどちらのメッソドが上書きされるのかメモ

python2.7 # coding=utf-8 class Base: class_name = 'base' def method(self): print "Base!" print self.class_name class BaseB: class_name = 'base_b' def method(self): print "BaseB!!!!" print self.class_name class Hoge(Base, BaseB): class_name…

git commit時にPythonのFlake8でコードチェックするメモ

バージョン変わってやり方も変わってたので一応メモ $ pip install flake8 $ flake8 --version 3.2.1 # プロジェクトのルートで以下コマンド $flake8 --install-hook git ファイルが作成される .git/hooks/pre-commit #!/usr/local/opt/python/bin/python2.7…

flake8 の設定を変更するメモ

(python2.7.13, flake8v3.2.1) ~/.flake8 にファイルを作って設定を書く [flake8] max-line-length = 120 参考 Configuring Flake8 — flake8 3.3.0.dev0 documentation

Python で Loto6 の当選確率の計算をしてみるメモ

(pytho2.7) In [9]: import itertools In [10]: len([i for i in itertools.combinations(range(43), 6)]) Out[10]: 6096454 # 1等 1/6096454 In [19]: len([i for i in itertools.combinations(range(6), 5)]) * len([i for i in itertools.combinations(ra…

Python で Ruby の each_slice みたいなやつメモ

(python2.7) def each_slice(arr, n): return [arr[i:i + n] for i in range(0, len(arr), n)] print(each_slice([1, 2, 3, 4, 5], 2)) print(each_slice([1, 2, 3, 4, 5], 3)) print(each_slice([1, 2, 3, 4, 5], 4)) # => [[1, 2], [3, 4], [5]] # => [[1,…

django-ckeditor の画像アップロードでハマったメモ

(django1.8, python2.7) 手順 ここ に書いてあるけど... Add ckeditor_uploader to your INSTALLED_APPS setting Add CKEDITOR_UPLOAD_PATH = "uploads/" setting Add (r'^ckeditor/', include('ckeditor_uploader.urls')), project's urls.py 略 Install pi…

Python で Zip ファイルを解凍するメモ

(python2.7.11) from zipfile import ZipFile import os dir_name = 'fuga' os.mkdir(dir_name) with ZipFile('hoge.zip', 'r') as z: z.extractall(dir_name) extractall() でディレクトリを指定しないとカレントディレクトリにディレクトリを作らずファイ…

Python でファイル作成する時に指定したディレクトリが無ければ作るメモ

(python2.7.11) ディレクトリが無いとこで open して write するとエラーになるので mkdir する # coding=utf-8 import os def write(filename, text): file_path = os.path.dirname(filename) if not os.path.exists(file_path): os.makedirs(file_path) wi…

Python のメソッドを文字列で呼び出すメモ

(python2.7.11) # coding=utf-8 class Hoge: @property def fuga(self): return 'fugafuga' h = Hoge() print h.fuga print getattr(h, 'fuga') # print getattr(h, 'fu') # AttributeError print getattr(h, 'fu', 'Nothing!') # -> fugafuga # -> fugafuga…