Bye Bye Moore

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

python

ClickをつかってPython製CLIツールをスマートにする その8:自前のバリデーション

selectやrangeを使えば大抵にバリデーションはできますが 自前のバリデーションも実行できます。 実際のところ 0以上、奇数という場合は以下のように import click def validate_count(ctx, param, value): if value < 0 or value % 2 != 0: raise click.Bad…

ClickをつかってPython製CLIツールをスマートにする その7:文字色をつける

Python用CLIツール作成ライブラリであるClickにも文字装飾の機能がついてます。nodeのcolorsや shuzo-kino.hateblo.jp Rubyのawesome_printみたいなもんですね shuzo-kino.hateblo.jp 実際のところ import click # 文字をつける click.echo(click.style('Hel…

ClickをつかってPython製CLIツールをスマートにする その5:gitのような子コマンドをもつもの

gitのように、ネスト構造をもつコマンドを作る方法です。 実際のところ コマンドのヘルプ文は長コメントで入れます import click #親コマンド @click.group() def cli(): pass #子コマンド。cli()という関数に紐づくので@cli以下に続ける @cli.command() def…

ClickをつかってPython製CLIツールをスマートにする その4:パスワード入力

shuzo-kino.hateblo.jp のシリーズ。 今回はパスワードの入力支援ですPythonにはデフォでgetpassという入力を不可視化するライブラリが入ってたりします shuzo-kino.hateblo.jp が、Clickの方がちょっとだけ高機能です。 実際のところ import click import c…

ClickをつかってPython製CLIツールをスマートにする その3:yes/no

shuzo-kino.hateblo.jp シリーズの3回目。 今回はCLIツールではよく見かけるyes/noの選択肢を表示するオプションのはなし。 実際のところ 何か文字列を表示し、yes/noを選択させるアプリを考えてみます。 import click def abort_if_false(ctx, param, valu…

ClickをつかってPython製CLIツールをスマートにする その2:バリデーションや選択

shuzo-kino.hateblo.jp の続きです。 import click @click.command() @click.option('--value', prompt='Your value', help='set your value', type=int ) def hello(value): click.echo('Value is %s!' % value) if __name__ == '__main__': hello() これの…

ClickをつかってPython製CLIツールをスマートにする その1:導入

実際のところ macOS 10.12.6(16G29) conda 4.3.29 Python 3.6.3 $ conda install click執筆時点ではclick 6.7が入ります動作試験をしてみましょう。 公式のサンプルをそのままコピペしてきます。 import click @click.command() @click.option('--count', …

Python3.6 + OpenCV3.1.1で加工範囲を限定してみる

Python3.6 + OpenCV3.1.1で加工範囲を限定してみます。 これで部分的にグレーにしたり、トラ模様にしたり一部分だけテンプレートマッチしたり……という事ができます。 実際のところ shuzo-kino.hateblo.jp import numpy as np import cv2 import sys def func…

Python3.6 + OpenCV3.1.1で対象物を円で囲ってみる

実際のところ 黒背景、対象物は白という状況を作った場合を想定します。 import numpy as np import cv2 import sys def function(target_file): #画像の読み込み img = cv2.imread(target_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #二値化によ…

Tuple型はDictionary型のKeyとしてつかえる

Tuple型はDictionary型のKeyとしてつかうことができます。 ……え、用途? 何らかの制約や高速化の際、クラスなしで関係する変数一個を紐付けできる……とかですかね??(小声 実際のところ 画面A、Bがあって、これの稼動状態をBoolenでもつようなDictionaly型…

リスト/タプル型の順番をひっくり返す

Pythonのデータ型であるリスト/タプル型の順番をひっくり返す方法です。 ちなみに、前者は変更可能、後者が変更不能と覚えておけば実用上問題はないみたいです。 実際のところ [1,2,3][::-1] #=>[3, 2, 1] (1,2,3)[::-1] #=>(3, 2, 1) というわけで、以下の…

Pythonで空クラスをつくる

単にデータを取りまとめるだけの、構造体のようなデータ列を持つクラスを作りたい場合 空クラスをを使ってあげれば動的に追加できます 構文上何かを書かないといけないので、"pass"をつかいます。 #初期値格納用クラス class DisplayInformation: pass di = …

Python3.6 + OpenCV3.1.1でビデオ顔追跡をやってみる

# -*- coding: utf-8 -*- """ OpenCV 3.1.1による顔追跡 """ import cv2 #初期値格納用クラス class DisplayInfomation: pass #第三引数はDisplayInformation def traceFace(cap, cascade, di): _, im = cap.read() #処理速度のためグレー化 gray = cv2.cvtC…

Python3.6 + OpenCV3.1.1でテンプレートマッチング

実際のところ import cv2 as cv import numpy as np from matplotlib import pyplot as plt import sys def function(pattern_file, threshold_val,): img_rgb = cv.imread('sampleimg.png') img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY) template =…

Python3.6 + OpenCV3.1.1で画像サイズを変える

import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) # 二値変換 #しきい値…

Python3.6 + OpenCV3.1.1で枠線や文字を描いてみる

import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) # 二値変換 #しきい値…

Python3.6 + OpenCV3.1.1で画像の二値化をする

Python3.6 + OpenCV3.1.1で画像の二値化をする方法です 実際のところ import cv2 import numpy as np if __name__ == '__main__': # 画像の読み込み。第二引数"1"はグレースケール img_src = cv2.imread("picture.png", 1) # グレースケールに変換 img_gray …

Python3.6 + OpenCV3.1.1でUSBカメラの画像をとる

実際のところ 環境はmacOSですが、winやlinux系でも基本は変わらないかと思われます。これまでpipを使ってましたが、環境変数まわりの崩壊が怖いので放棄。 新たにminicondaを入れます。 Miniconda — Conda からダウンロード用スクリプトを持ってきて、実行…

Python用データ分析ライブラリPandaをつかう その5:空白行の取扱

デフォでは空白を無視しますが、別途取扱を決める事ができます。 実際のところ CSVファイル読み込みを想定します。 オプションを設定。 "False"と大文字にしないと駄目です。 csv2 = pd.read_csv('sample.csv', usecols=lambda x: x.upper() in ['PRECINCT',…

Python用データ分析ライブラリPandaをつかう その4:値を編集する

今回はテーブルに突っ込んだデータを加工する方法です。 実際のところ 今書いてます 参考もと 10 Minutes to pandas — pandas 0.21.1 documentation

Python用データ分析ライブラリPandaをつかう その3:CSVデータの読み込み方を変える

shuzo-kino.hateblo.jp の続きです。 オプションを設定してやることで、使うカラムを絞ったり、 特定のカラムをindexとして転用できてりします。 lambdaを使えるのが地味にポイント高いですね。 実際のところ import pandas as pd import numpy as np csv = …

Python用データ分析ライブラリPandaをつかう その2:CSVのデータをつっこむ

import pandas as pd import numpy as np csv = pd.read_csv('sample.csv') print(csv) # county precinct office district party candidate votes #0 Clark 1 President NaN REP John R. Kasich 5 #1 Clark 2 President NaN REP John R. Kasich 0 #2 Clark …

Python用データ分析ライブラリPandaをつかう その1:導入編

PandaはPython用データ分析ライブラリです 実際のところ $ pip install panda 使い方は、公式提供の10分動画が詳しいです vimeo.com 参考もと Python Data Analysis Library — pandas: Python Data Analysis Library

datasetteでお手軽にSQLiteでJSON APIを作る その2:クエリを使ってみるのじゃ〜

前回の続きです 今回はクエリを作ってみるのじゃ〜(流行りに乗っていくスタイル 実際のところ 前回のGUIな例にもあるように、標準的SQL構文がつかえます "select+*+from+sample"であれば $ curl http://127.0.0.1:8001/base-4cc8b58.json?sql=select+*+from…

datasetteでお手軽にSQLiteでJSON APIを作る その1:導入編

An instant JSON API for your SQLite databases とあるように、お手軽にSQLiteでJSON APIを作る場合に重宝します。 実際のところ 環境はPython3の最新版が必須です。 私の環境は3.4系でしたが、執筆時では3.5系でないとインストールできませんでした。 $ pi…

Python経由で手っ取り早くローカルHTMLファイルを外部に公開したいならhttp.server

今日、とある協力企業さんから習って驚いたのですが…… HTMLファイル等々、静的ファイルが用意できているなら、http.serverを使うことでコードレスでサーバーを起動できます わざわざbottleで立てる必要なんか無かったんや! 実際のところ "$WEBPAGEPATH"にht…

websocketで来た内容をIFTTTに投稿してみる

Python製軽量WEB鯖Bottleを使い、websocketで来た内容をIFTTTに投稿してみます。 ……jQueryクソ雑魚勢なので、やたら苦労しました……。 実際のところ 構成 ファイル構成は以下の記事と同様 shuzo-kino.hateblo.jp $ tree . ├── app.py ├── static │ └── js │ └…

BottleでjQueryのPOSTアクションをうけとる

クソ雑魚なのでjQueryは避けていたのですが…… 色々作るときに不便なのでやってみることにしました。 重いものを作る気はないので、Bottleと連携させます。 実際のところ 構成 $ tree . ├── app.py ├── static │ └── js │ └── client.js └── templates └── ba…

BottleでWebsocketする

なんどか紹介しているPython製軽量WEB鯖Bottleで、Websocketを扱う方法です。 実際のところ 環境導入 $ pip install bottle-websocket サンプル実行 公式提供のサンプルはgithubにあります。 実行には別途、geventという並行処理系ライブラリが必要です。 $ …

さくらVPS上にPython製Wiki "moinmoin"をつくる その1:導入編

MoinMoin*1はのPython製Wikiアプリです。 実際のところ 最新版は2016年10月リリースの"moin-1.9.9"です。 日本語版Wikipediaの記述は古いので注意! 以下、今書いてます( 参考もと tenkoma.hatenablog.com MoinMoinWiki - MoinMoin cu39.hateblo.jp MoinMoi…