2016-11-01から1ヶ月間の記事一覧
"if __name__ == '__main__':"という構文をよく見かけますね。 これは、公式だと以下のように説明されています。 A module’s __name__ is set equal to '__main__' when read from standard input, a script, or from an interactive prompt. まぁ、要するに…
psycopg2で画像データを読み書きする方法です。 実際のところ 画像データの格納にはbytea型を使います。 PostgreSQLのbytea型はmemorybuffer型を返すので、ちゃんとbytes関数なりで整形しないといけません。 import psycopg2 DSN = "dbname=postgres user=sh…
前回に引き続き、psycopg2でデータをINSERTする方法です。 実際のところ imageというbytea型のbyte_dataカラムを持っているテーブルに対し、バイナリデータを叩き込む方法は以下の通り。 import psycopg2 DSN = "dbname=postgres user=shuzo_kino" SQL3 = "I…
psycopg2を使ってPostgreSQLにあるデータを読み出す 実際のところ 以下のSQL文を叩くケースを考えます。 固定の時間値を返す。 imageテーブルからとりあえず一個引っ張り出す せっかくwith節を使う事ができるので使ってみます。 import psycopg2 DSN = "dbna…
あんまり参照する機会もないですが、PostgreSQLで現状のログインしているユーザ名を表示する方法です。 実際のところ 現状のユーザ情報はCURRENT_USER変数に格納されています。 というわけで、全部出したい場合は、こう # select * from pg_user where usena…
psqlも-cオプションでSQL文を直接叩きつけることができます。 実際のところ 基本的な使い方 postgresというDBに対し、"select byte_data from image where id = 0;"というSQL文を叩きつけたい場合は以下の通り。 $ psql postgres -c "select byte_data from …
今回はmacOSのお話。 多分、他のOS Xでも同じです。Python系の導入時に"BUILD FAILED (OS X x.x.x using python-build y.y.y)"などと出る場合、xcode-selectがうまく導入できていないのかも知れません。 実際のところ 背景 postgresqlをpythonで使うpsycopg2…
xxdコマンドをつかうと、バイナリファイルをHEX文字化することができます。 そのままファイルとしてローカルに保存する事も可能です。 実際のところ ここで大活躍するのがxxdコマンド。 $ xxd -p image.jpg | tr -d '\n' > dump.hexオプションpは以下にある…
postgresをbrewで入れ直し 実際のところ $ brew cleanup postgresql $ brew remove postgresql $ brew install postgresqlDBを新造 $ rm -rf /usr/local/var/postgres $ initdb /usr/local/var/postgres -E utf8$ pg_ctl -D /usr/local/var/postgres -l logf…
# 時計回りに45度 out = im.rotate(45) #左右反転 out = im.transpose(Image.FLIP_LEFT_RIGHT) #上下反転 out = im.transpose(Image.FLIP_TOP_BOTTOM) #90度、180度、270度回転 out = im.transpose(Image.ROTATE_90) out = im.transpose(Image.ROTAT…
python3のprintf関数のオプションでは改行文字や、イテレータ形式のくっつける文字を指定できたりします。 これはPEP3105文章で設定された話です。 実際のところ くっつける文字はsepで指定。 str = "hoge" print(*str, sep="+") #>> h+o+g+e 終端文字をつけ…
Pillowはpython3でも使える画像操作ライブラリです。 参考もと サムネイル from __future__ import print_function import os, sys from PIL import Image size = (128, 128) for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".thumbn…
0.0.0.0は来るもの拒まずの特殊なIPv4アドレスです。IPv6だと::128*1になります。というわけで、bottleで以下のようにやると簡易的に自分のPCを外からアクセスできるWEB鯖にすることができます。 run(host='0.0.0.0', port=8080) たとえば、自前のアドレスが…
以前の例ではformリクエストに載った画像ファイルを扱いました。 ただ、送信デバイスの都合によっては直接データを叩きつけるような奴もあります。 この場合は、どうしたらいいのでしょうか? 実際のところ esp8266で以下のように指定URLに対し直接画像を叩…
$ python -m serial.tools.list_ports --help usage: list_ports.py [-h] [-v] [-q] [-n N] [regexp] Serial port enumeration positional arguments: regexp only show ports that match this regex optional arguments: -h, --help show this help message…
Pythonでディレクトリ中のファイルをソートし最新版をとってくる方法です。 実際のところ Bottleで"/tmp/img"にある時間の画像の最新版を取るスクリプトは以下の通り。 タイムスタンプをファイル名として居る時、logfiles[-1]が最新です。 import os @get('/…
python用超軽量WEB鯖Bottleで画像を受け取る方法です形式としては、formで添付ファイルとして来ているようなケースを想定します。 このスクリプトでは組込み機器との連携を前提にしているので投稿フォームは無し。 実際のところ Jpeg画像を受け取るケースを…
スイッチサイエンスさんのesp8266開発ボード「ESPr Developer」とgroveカメラを繋ぐ方法です。 開発ボードだと面倒ごとが大分緩和されます。 実際のところ カメラで画像を取る POSTはしない。ブラウザで確認するだけ。 必要資材 ESPr Developer(ESP-WROOM-0…
Python組み込み関数filterはiterableなオブジェクトから条件にあったものを抽出します。 Rubyで言うところのselectみたいなモンですかね 実際のところ def flt(x): return x > 4 list(filter(flt, [9,1,5,4,2,2,0])) #>> [9, 5] 参考もと 2. 組み込み関数 — …
finallやfinditerは標準付属の正規表現ライブラリにくっついている関数です。 何やらゴチャゴチャした文字列がある その中でほしいのは一部 結果は文字列型にしたい というような要件で役に立ちます。 実際のところ findall 最も雑な方法はfindallで指定して…
東芝のTA7291Pは直感的に使いやすいモータドライバです。モータードライバー TA7291P 2個セット出版社/メーカー: 株式会社東芝セミコンダクター社(TOSHIBA)メディア: その他この商品を含むブログを見る 性能表は公式によるとこんな塩梅です。 今回使ったTA72…
とりあえずデータを受信したか確認したい時のための簡易API鯖です。 form形式とjson形式を受け取る方式を考えてみます。 実際のところ bottleなら最小構成で楽々。 from bottle import post, request, run @post('/') def receivedata(): body = request.par…
Pythonの"-m"オプションが検索しているパスは sys.pathで確認できます。 実際のところ ためしに、REPLでみてみましょう。 import sys sys.path #>> ['', '/Users/shuzo_kino/.anyenv/envs/pyenv/versions/3.4.3/lib/python34.zip', '/Users/shuzo_kino/.anye…
format関数には文字詰め用オプションがあります。 実際のところ 中央は「^」、左詰めは「」 '{:=^30}'.format('Sample string') #>> '========Sample string=========' '{:=<30}'.format('Sample string') #>> 'Sample string=================' '{:=>30}'.f…
Pythonのビルトイン関数zipはiterate可能なモノをくっつける 実際のところ 試しに、rangeと文字列をくっつけてみます。 形態としてはzipオブジェクトとして格納されるみたいです。 zp = zip(range(0,100,20), 'abcde') #>> <zip object at 0x1014386c8> ビルトインのlist関数を使ってあ</zip>…
前回は文字列をそのままBytes型に変換する方法でした。 今回は16進数文字列をbytesarray型にする方法です。 実際のところ bytearrayのfromhex関数に渡すだけです。 "0x"とか入っていると使えないので注意してください。 bytearray.fromhex('00DE00AD00BE00EF…
Pythonで文字列整形といえば……formatですね。 こいつをつかえば、ビット芸もこの通り。 "{:04X}{:04X}{:04X}{:04X}".format(0xde,0xad,0xbe,0xef) #>>'00DE00AD00BE00EF' とはいえ、諸般の都合でbyte型じゃないと困るケースもあるでしょう。 シリアル通信に…
Pythonの正規表現ライブラリ"re"は機能が充実しています。 文字列の置き換えに使うsub関数とグループ参照を併用すると必要部分を抽出して並び替え……みたいな事は割りとスマートにいけます。 実際のところ こんな例があったとします。*1 データは次の形式でく…
PySerialには簡易的シリアル通信ソフトが備わっています。 実際のところ なんもやらないと、ポートの指定画面から入ります。 $ miniterm.py --- Available ports: --- 1: /dev/cu.Bluetooth-Incoming-Port n/a --- 2: /dev/cu.GMSPP01-101E-SerialPort n/a -…
python用のシリアル通信用ライブラリpySerialには現状接続している周辺機器のリストを出すコマンドが付属しています。 実際のところ $ python -m serial.tools.list_ports -v /dev/cu.Bluetooth-Incoming-Port desc: n/a hwid: n/a /dev/cu.GMSPP01-101E-Ser…