Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

python

標準ライブラリ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()はタプル型で(ディレクトリパス, ディレクトリ名, ファイル…

Pythonでディレクトリを作ったり消したり

実際のところ import os #ディレクトリ作成 os.mkdir("somedir") #ディレクトリ削除 os.rmdir("somedir") 再帰的にディレクトリを全部ぶっ飛ばす "os.removedirs(path)"という関数もあるそうですが……怖いですねコレは現在の位置を見たい場合は shuzo-kino.ha…

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 …