TIL

Today I Learned. 知ったこと、学んだことを書いていく

Python

ISO-8601の日付の文字列をdatetimeに変換

サードパーティモジュールのdateutilを使うと楽に変換できた。(dateutilのドキュメント) dateutil.parser.parse()を使うことで変換できる。 まずはdateutilをpipでインストール $ pip install python-dateutil 例)2017-11-16T13:00:00+09:00という文字列をd…

datatimeモジュール - Python

入門 Python 3 に記載されていた日付と時刻の扱いについてまとめてみた。忘れてもいいようにメモとして残しておく。 Pythonで日時や時刻を扱うときの一つの方法として、標準モジュールのdatetimeモジュールがある。このモジュールには主なオブジェクト(クラ…

MacにPythonの開発環境を構築する pyenv+pyenv-virtualenv

UbuntuにPythonの開発環境を構築する pyenv+pyenv-virtualenvのMacバージョン。 こちらのサイトを参考にさせていただきました。 pyenvをインストールする Homebrewでインストールし、設定を行う。 $ brew install pyenv $ brew install pyenv-virtualenv .ba…

クラスでプロパティを使う - Python

入門 Python 3 に記載されていたプロパティについてまとめてみた。忘れてもいいようにメモとして残しておく。 Pythonではすべての属性、メソッドが公開となっている。もし、属性を非公開をしたいときにはプロパティという機能を使う。まずはproperty()メソッ…

#!/usr/bin/env python について

Pythonのソースにはなんとなく#!/usr/bin/env pythonって記述してたけど、なにこれってなったから検索してみたのでまとめておく こちらのサイトに書かれているように、(たぶん)pythonコマンドを省略できるようにするという感じなのかもしれない #!はシェバン…

pyenv+pyenv-virtualenvの使い方

バージョンのインストール pyenv install {version} インストールできるバージョンの確認 pyenv install -list 仮想環境の構築 pyenv virtualenv {version} {仮想環境の名前} インストールしているバージョンの確認 pyenv versions カレントディレクトリに仮…

UbuntuにPythonの開発環境を構築する pyenv+pyenv-virtualenv

今はPipenvを使っている Pipenvについては別の記事で書いている tmg0525.hatenadiary.jp UbuntuにPythonの開発環境を構築する まず、Pythonをインストールするときに必要なものをインストールする sudo apt install -y make gcc sudo apt install -y make bu…

pip listした時にでる警告の対処

pip listをした時に以下のような警告が出た DEPRECATION: The default format will switch to columns in the future. You can use –format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable …

importしたモジュール内でもログを出力する - logging

loggingを使用してimportしたモジュール内でもログを出力する方法 コードにログの設定を記述してもよいが、設定ファイルを使用することで管理がしやすくなる。また、開発時と稼働時でログレベルのみ変更すればよいことからいいとされている(?) 設定ファイ…

リクエストのJSONデータを受け取る - Bottle

リクエストでJSONを送信してきた場合の処理 from bottle import route, run, request @route("/hello") def hello(): contentType = request.get_header('Content-Type') print(f"header Content-Type: {contentType}") if contentType == "application/json…

UnboundLocalError: local variable '変数名' referenced before assignment ってエラー

対応としては関数内で global 変数名 とする ↓ 説明 以下のようなコードを実行した場合エラーが出てしまう >>> hoge = False >>> def foo(): ... hoge = False if hoge else True ... print(hoge) ... >>> foo() Traceback (most recent call last): File "<stdin>"</stdin>…

if文を短く記述する

条件によってどちらかの値を代入するといった状況があったとする(例:aが真の時はTrueを代入、aが偽の時はFalseを代入) (真の時)if (真偽式)else (偽の時)という記述ができる 通常通り記述 b = None if b is None: b = True else: b = False 短縮し…

strとbytes

Python3ではstrとUTF-8 bytesの相互変換が簡単にできる strからbytesに変換:encode("utf-8") bytesからstrに変換:decode("utf-8") strからbytes >>> test1 = "あいう".encode("utf-8") >>> test1 b'\xe3\x81\x82\xe3\x81\x84\xe3\x81\x86' bytesからstr >>…

POSTリクエストでデータを送信 - requests

POSTとdata Pythonのrequestsモジュールを使用したPOSTリクエスト送信時にデータも一緒に送信したい場合がある postメソッドの引数の data json のどちらかに送信したいデータのdictを渡す dataに渡したdictはリクエスト送信時に自動的にエンコードされる。…

Base64エンコードを行う

PythonでBase64エンコード処理を行う base64モジュールを使う とても簡単にできる >>> import base64 >>> s = "hello world!" >>> base64.b64encode(s) >>> base64.b64encode(s.encode("utf-8")) b'aGVsbG8gd29ybGQh' すごい簡単!! Base64エンコード後の文…

POSTリクエストの処理 - Bottle

POSTリクエストの処理 BottleでPOSTのリクエストを処理する場合、@route("/example", method="POST")か@post("/example")とすればよい 例 以下のようなwebhook.pyというソースコードがあったとする from bottle import route, run @route('/webhook', method…

Bottle使ってみる

PythonのWebフレームワークのBottleを使ってみる Bottleを使うにはインストールは必要ない。bottle.pyをダウンロードするだけでよい。 $ wget https://bottlepy.org/bottle.py 次のようなhello.pyを作成する from bottle import route, run @route('/hello')…

pyenv + virtualenvで追加と設定

以下のように新しく追加する $ pyenv virtualenv 3.6.1 py3.6_myPython 今のディレクトリに設定したいときには $ pyenv local py3.6_myPython (py3.6_myPython) $ 参考文献 pyenvとvirtualenvで環境構築 - Qiita

Python プログラムを終了 sys.exit()

プログラムを終了させるには sys.exit()を呼び出せばよい # -*- coding: utf-8 -*- import sys for i in range(10): print(i) if i == 5: sys.exit() 出力 0 1 2 3 4 5 参考文献 Pythonでプログラムを終了させる:sys.exit()

GETリクエストでパラメータをつけて送信 - requests

requestsを使ってパラメータ付きGETリクエストをしたい params引数にパラメータのDictを渡せばよい >>> import requests >>> payload = {"key1": "value1", "key2": "value2"} >>> r = requests.get("http://example.com", params=payload) 参考文献 Quickst…

Python 3 文字列

Pythonの文字列はすべてイミュータブル(変更できない)