Bye Bye Moore

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

python

hy2pyを使ってhyスクリプトをpythonスクリプトに転換する

hy2pyはhy環境に付属するpythonスクリプトコンバーターです。 何からの事情でPythonしかない先で使うときに活用できそうです。 実際のところ (import time) (import serial) (setv ser ( serial.Serial "/dev/ttyACM0" 57600)) (defn robotTask [dist] (-> (…

Hylang環境でpySerialをつかってシリアル通信やる

巷で大人気のPythonには豊富なライブラリ群があります。 教材の類も充実してますし、会社や研究室の先行プロジェクト資産もあるでしょう。 Hylangは幸いにしてPythonとの連携機能が充実しているので こういった先行資産を活用しながら、徐々にLisp色に染めて…

Ubuntu18 に Python上で動く魔界LISP "Hy"の環境をつくる

HyはPython上に実装されたLISP方言です。 Pythonのライブラリを活かしながら、LISP的な記述ができる強みがあります。今回はこのHy言語をUbuntu18LTSの上に構築してみます。 実際のところ Python上で動いているので、当然Pythonの環境は必要です。 今回はPyth…

Jetson Nanoをつかう その2:物体認識のサンプルを動かしてみる

今書いてまs

RasPiのGPIOのBCM番号をみる

実際のところ PythonのGPIOコマンドを使おうとする場合、raspbian組み込みの以下のコマンドでピン状況をみる $ gpio readall +-----+-----+---------+------+---+---Pi 3+--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | …

Gitリポジトリにあるpipパッケージを導入する

pipのリポジトリにはないけど、git系にはあがっているパッケージを 導入する方法です。 実際のところ http/httpsURLのあたまに"git+"をつける $ sudo pip3 install git+https://github.com/ekaschalk/jedhy.gitまたは、プロトコルのところをgitにしたやつで…

入れ立てpip環境でCommand "python setup.py egg_info" failed with error code 1 in ……とか言われたらsetuptoolsがちゃんと入っていないかも

実際のところ pipの環境をつくり、bottleを導入しようとしたところ以下のエラーが。 $ pip3 install bottle Collecting bottle Downloading https://files.pythonhosted.org/packages/bd/99/04dc59ced52a8261ee0f965a8968717a255ea84a36013e527944dbf3468c/b…

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…