TIL

Today I Leaned. 無理せず。できるときに。自分のペースで。

Python

PythonでSlackにメッセージを送信する

SlackのIncomingWebHookを使ってPythonからメッセージを送信してみる。 ここの「incoming webhook integration」でメッセージを送信したいチャンネルのURLを取得する。 取得したURLに対してPOST送信すればメッセージ送信ができる。POST送信はrequestsを使っ…

ファイルを読み込み(と書き込み)

ファイルの読み書きにはopen()を使う。 第一引数には対象のファイルのパス、第二引数にはモードを指定する。 第二引数について 引数 モード r 読み取り w 書き込み a 追加書き込み 読み込みを行う場合 >>> with open('/Users/tamago324/test.txt', r) as f: …

文字の空白を取り除く

str.strip()を使う。 >>> 'abc '.strip() 'abc' >>> ' aab '.strip() 'aab' 前後の空白を取り除く。 参考文献 文字列の前後の空白を削除するには (strip / trim) | hydroculのメモ

intを指定した桁でゼロ埋めする

Pythonでintの値を0埋めする方法。 色々方法はあるらしい。3つだけ紹介(ほぼ同じだけど)。 >>> '{0:02d}'.format(1) '01' >>> '{:02d}'.format(1) '01' >>> '{:02}'.format(1) '01' str.formatについてはこちらのサイトに記載されていました。 {}の中に:を書…

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

まず、Pythonをインストールするときに必要なものをインストールする sudo apt install -y make gcc sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncurse…

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 ってエラー

以下のようなコードを実行した場合エラーが出てしまう >>> hoge = False >>> def foo(): ... hoge = False if hoge else True ... print(hoge) ... >>> foo() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in foo UnboundLoca</stdin></module></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の文字列はすべてイミュータブル(変更できない)