Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

python

Google Driveと連携出来るJupyter Notebook、Google Colaboratory をつかう

Google Colaboratoryってブラウザ上でPython使えてすごい。いつの間にこんな機能がGoogle Driveに入っていたんだ……!ここまで環境の入り口が整備されてしまうと、興味あるのに手を出さない人間はただのサボり屋さんだとバレてしまってきついですね(自分 pic…

OSの改行文字を得る

標準ライブラリOSには色々と便利な関数があります。 実際のところ import os os.linesep #>> '\n' これがwindowsだと import os os.linesep #>> '\r\n' 参考もと How can I remove (chomp) a trailing newline in Python? - Stack Overflow 16.1. os — Misce…

Python3でchomp的手法以外で改行文字を消したい場合

shuzo-kino.hateblo.jp の派生。 改行文字を取扱たい場合、rstrip以外にも色々手があります。 実際のところ まずはrstrip。 これは連続してる奴もまとめて消す奴です。 なので、厳密にはchomp的ではないですね。 str = "\na\nb\n\n" str.rstrip() #>> '\na\n…

Jupyter Notebookに外部拡張を導入する

今回はJupyter Notebookに外部拡張を導入する方法です。 例としてJavaScript製マップ活用ライブラリleaflet.jsのJupyter Notebook用拡張、ipyleafletをいれてみます。 実際のところ 環境導入 $ pip install ipyleaflet $ jupyter nbextension enable --py --…

Jupyter Notebookの結果をPDF等々に出力する

Jupyter Notebookの結果をPDF等々に出力する方法です。 内部的にはTeXを援用しています。 他にはMarkdownやpy、HTMLなんてのもあります。大本がJSON形式で把持しているので、頑張れば他の形式にもできそう。 実際のところ 前提 macOS 10 環境導入 利用するた…

Jupyter Notebookをつかう

Jupyter Notebookは対話型のドキュメント生成を可能とするライブラリです。 かつてiPythonと呼ばれていました。 最近は動かしながら検証できるドキュメント兼サンプルというプログラミング便利フレームワークとして 学術系を中心に活用されています。 実際の…

Python3でQRコードを生成する

pypi.org 実際のところ 導入 $ pip install qrcode別途画像が必要な場合、画像生成ライブラリpillowが必要です $ pip install pillow コマンドで生成 何もしないとASCIIアートで出てきます bashなら、そのまんまカメラで認識可能です $ qr "https://duckduck…

リスト初期化で使える小技

Python3でリスト初期化で使える小技 answer1 = ([1]*8 + [0]*2)*2 answer2 = [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0] answer1 = answer2 #=> True これならまぁ頑張る気にもなりますが…… こういうパターンだと割と重宝しそうです。 a…

PythonのRoundメソッドも整数部分の切り上げにつかえる

shuzo-kino.hateblo.jp 他のLLと同様、PythonのRoundメソッドも負の値を与えると整数部分の切り上げにつかえます。 しかも、整数か小数点持ちかで結果をちゃんと切り分けてくれる親切仕様。 実際のところ round(2018,-2) # 2000 round(2018.0,-2) # 2000.0 …

unittestのテスト関数にも色々とある

shuzo-kino.hateblo.jp の流れで。 unittestには色々とテスト関数があります。 実際のところ assertEqual/assertNotEqual a = 1 b = 1 self.assertEqual(a, b) # => OK c = 2 self.assertNotEqual(a, c) # => OK 型固有を使わなくともassertEqual/assertNotE…

unittestをコマンドラインから個別に実行

shuzo-kino.hateblo.jp の続き。 参考もと 上記記事のような構成で、test_module.pyのTestModuleクラスについて実行したい場合は以下のように。 $ python -m unittest test_module.TestModule setUp . setUp . --------------------------------------------…

Python3標準添付のunittestで・テスト書きながら実装する

ここのところ使い捨てのスクリプトばっかりやっていて感覚が鈍ってきたので、 新規プロジェクトはリアルに数年ぶりにTDD的方法でやろうと思い立ちました。 幸い、今回使うツールであるPython3はかなりしっかりしたテスト ライブラリ"unittest"がついてます。…

Bottleでフォーム経由でファイルアップロード

shuzo-kino.hateblo.jp ではAPI的な画像アップ先をつくりました。 $ curl -F "upload=@/PATH/TO/FILE.EXT" http://localhost:8080/imgな感じでブンなげる奴ですね。 実際のところ from bottle import route, request @route('/upload', method='POST') def d…

RequestsをつかってPythonで外部WEBに接続する その5:ファイルを送信

今回はBottleで立てた個人鯖に画像ファイルをおくるケースを考えてみます。 取りまとめ中…… 参考もと Requests: HTTP for Humans — Requests 2.18.4 documentation

RequestsをつかってPythonで外部WEBに接続する その4:最初からjsonで取得する

最初の奴ではtextを一々jsonにパースしてましたが…… デフォでjsonを出力する奴があるんですね。 import requests yourappkey = {{YOURAPPKEY}} url = 'http://api.openweathermap.org/data/2.5/weather?id=1850147&appid={0}'.format(yourappkey) r = reques…

RequestsをつかってPythonで外部WEBに接続する その3:jsonをpostする

APIだとJSONで投入するケースが多いですね。公式のクイックスタートだと出てきませんが、 post関数にはjsonというオプションが存在します。 import json url = "https://api.something.url" payload = {'some': 'data'} r = requests.post(url, json=payload…

Python3で天気を取得するツールを作ってみる

Python3で天気を取得するツールを作ってみます使うライブラリ・環境は以下の通り python3.6 Requests ライブラリ click ライブラリ 標準添付jsonライブラリ open weather map api import click import json import requests @click.command() @click.option(…

RequestsをつかってPythonで外部WEBに接続する その2:OpenWeatherMapから天気情報取得

今回はRequestsをつかって、Python経由でOpenWeatherMapから天気情報取得します。 OpenWeatherMapについては、前回の記事を参照してください。 shuzo-kino.hateblo.jp 実際のところ すでにAPIKEYをとっているものとします。 import requests yourappkey = {{…

RequestsをつかってPythonで外部WEBに接続する

RequestsはPythonで外部WEBに繋ぐ場合に使えるライブラリです。 過去の記事だと shuzo-kino.hateblo.jp だとか shuzo-kino.hateblo.jp で使ってます。 参考もと Requests: HTTP for Humans — Requests 2.18.4 documentation

Python3.2から追加されたfomat_map関数で辞書型の中身をひっぱりだす

shuzo-kino.hateblo.jp では、dictionary型に対し"**"を適用し中身を引っ張り出しました Python3.2から追加されたfomat_map関数は同様の事を変な記法無しに実行できます import json data = json.loads('{"val": 0, "name": "goo"}') """ 以下の二つは同じ出…

パースしたJSONをformat関数で取り扱う

PythonでパースしたJSONをformat関数で取り扱う方法です。 実際のところ import json data = json.loads('{"val": 0, "name": "goo"}') "Your name is {name} ".format(**data) # 'Your name is goo ' 参考もと How do I format a string using a dictionary…

format関数で表示順の指定/繰り返し

pythonのformat関数は所定の構文により パターンの表示順を指定可能です。 また、同じ文字を複数だす事で繰り返しもできます。 実際のところ "{0:}{0:}{1:}".format('foo','bar') # 'foofoobar' 参考もと www.python.org

今日の日付をyymmddみたいな文字列にする

今回はPython3で今日の日付をyymmddみたいな文字列にする方法です。 Stringにある、format関数をつかいます。 実際のところ 今日の日付をとるには、today関数 import datetime datetime.date.today() # datetime.date(2018, 2, 6) これを文字列にするためfor…

標準ライブラリCalender

Pythonの標準ライブラリCalenderはその名の通りカレンダーを表示してくれる奴です。 実際のところ import calender #日曜始まりのカレンダー c = calendar.TextCalendar(calendar.SUNDAY) c.prmonth(2018,2) """ February 2018 Su Mo Tu We Th Fr Sa 1 2 3 4…

Pythonで日付計算

Pythonで日付計算をする場合は標準ライブラリdatetimeをつかいます。 実際のところ 1/30から2/28までの差分をとる場合 import datetime datetime.date(2018,2,28) - datetime.date(2018,1,30) #>> datetime.timedelta(29) そのままだと型が違うので、コンバ…

List/Tupleからランダム個数の要素をとる

List/Tupleからランダム個数の要素をとる方法です。 実際のところ 標準ライブラリのrandomについている関数、choiceとchoicesを使います。 choiceは一個、choicesはkの値の個数分とってくれます。stringライブラリの定数を使って文字列を生成。 それを使って…

標準ライブラリstringに入っている定数ズが地味に便利

Python標準ライブラリstringに入っている定数ズが地味に便利です。 実際のところ 使ってみると、こんな感じ import string string.ascii_letters # 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' string.ascii_lowercase 'abcdefghijklmnopqrstuv…

標準出力/出力をつかってみる

import sys sys.stdin #> <_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'> sys.stdout #> <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> 通常のファイルオブジェクトと同じような使い勝手なので、 単に一行毎に読みたいだけなら以下のような感じになります for line in sys.stdin: print line 参考もと 29.1. sys — System-specific parameters and f…</_io.textiowrapper></_io.textiowrapper>

PurePath

This module offers classes representing filesystem paths with semantics appropriate for different operating systems. Path classes are divided between pure paths, which provide purely computational operations without I/O, and concrete paths…

Pythonでディレクトリ内ファイルを調べるあれこれ

単に名前が欲しいだけなら、listdirで直ぐでてきます。 os.listdir()scandir()とwalk()はオブジェクトをかえしてきます。 ちゃんと参照したい場合、for文でぶんまわしてやる必要があります。walk()はタプル型で(ディレクトリパス, ディレクトリ名, ファイル…