- 1. Pythonビルトインの分数を扱うfractionsパッケージについて軽く調べてみた。
- 2. Pythonのクラスの書き方
- 3. Anaconda3で bad interpreter :Not such file or directoryが出た時の対処法と原因究明した話。
- 4. multiprocessingを使ってflask起動後に他の処理を立ち上げる
- 5. [python] Redmine APIで情報を読み込む
- 6. 【Python】OpenCVで使うパスに日本語を入れてはならない
- 7. 兎にも角にもPythonの開発環境をローカルに最速で作る(初学者用)
- 8. Azure IoT Hub に paho で pub/sub (CA 認証)
- 9. [Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
- 10. [python]ライブラリramkanのインストールでエラーになる
- 11. pythonistaでScroll Viewの実装方法1
- 12. pythonでスプレッドシートとSlackを連携させてBOTを作ってみる2/2(python+gspread+slackbot)
- 13. 複数ファイルでのParquet・HDF5でのVaex・Daskなどのパフォーマンス比較
- 14. pythonでextension methodを実装してみる
- 15. AtCoder 緑が Go で解いてみた
- 16. Pygame2 for Multi touch device
- 17. Tk.textでログ表示させるときのハマりポイント
- 18. Azure IoT Hub の SAS トークンの作り方
- 19. 元画像処理エンジニアがサイゼリヤの間違い探しをOpenCVで解いてみた
- 20. 生物トラッキングのDeepLabCut動かしてみた
Pythonビルトインの分数を扱うfractionsパッケージについて軽く調べてみた。
今更ながら分数を扱うPythonビルトインのfractionsパッケージという存在を知ったので、どんな挙動をするものなのかを軽く調べておきます。
# 記事内で使う環境
Python 3.8.6を使います。残りはビルトインのfractionsパッケージだけ使っていきます。
# 基本の使い方
まずは扱うためにfractionsパッケージのimportが必要になります。特にFractionクラスが利用のメインとなるため、そちらをimportします。
“`py
from fractions import Fraction
“`Fraction(分数)クラスはnumerator(分子)という第一引数とdenominator(分母)という第二引数を受け付けます。
“`py
f = Fraction(numerator=3, denominator=4)
“`インタラクティブシェルやJupyter上でFractionクラスのインスタンスを表示してみると、分子と分母の値を含んだ形でrepr的に表示されます。
“`py
>>> fFraction(3, 4)
“`
Pythonのクラスの書き方
#目的
pythonを勉強しているうえで、クラスの書き方に理解が一度で追いつかなかったので、アウトプットして定着させる。#クラスとインスタンス
– クラス・・・プログラミングにおいて、「モノ」を生成するためのレシピ的なもの
– インスタンス・・・レシピをもとに生成された「モノ」
##クラスの宣言方法
クラスを扱うには、宣言する必要がある。“`python:sample.py
#クラスの宣言
class SampleClass():
“`##クラスの使い方
クラスの中で関数を定義することができる。
クラスの中で定義された関数のことを**メソッド**という。メソッドの定義の方法は通常の関数と同じだが、第1引数にselfを使う。
“`python:sample.py
#クラスの宣言
class SampleClass():
def hello(self):
print(“Hello World!”)
“`##インスタンス変数の生成
インスタンスには色々な情報を定義することができる。
八百屋さんで売っていそうな品物を例にしてみる。
下
Anaconda3で bad interpreter :Not such file or directoryが出た時の対処法と原因究明した話。
# 自分の環境
“`
macOS Catalina version 10.15.5
Python3.8.5
Anaconda3
conda 4.9.2
anaconda Command line client (version 1.7.2)
“`# エラー状況
“`Bash:エラーメッセージ
$ jupyter lab
-bash: /Users/+++/anaconda3/bin/jupyter:
/Users/***/opt/anaconda3/bin/python: bad interpreter:
No such file or directory
“`しばらくぶりに、Anacondaの環境でJupyter labを実行しましたが、上記のエラーが出てしまいました。
今回は、対処方法と原因を探ってみました。間違っていたらすみません!なおJupyter labがわからない方は、Jupyter notebookと考えていただいても構いません。
おそらく今回のエラーにおいて、両者に大きな違いはありません。[^1]# 試したこと
### 同様の記事があった。
[
multiprocessingを使ってflask起動後に他の処理を立ち上げる
### きっかけ
flaskを起動しつつ、他の処理をさせたいことがあったので、なんとかならないかなと書いてみました。とりあえず動いたので公開します。長時間の検証はしていません。### 動作環境
Python 3.9.1
flask 1.1.2“`flask_hogehoge.py
from flask import Flask
from multiprocessing import Process
import datetime
import timeapp = Flask(__name__)
@app.route(‘/’)
def index():
return “Hello World!”def hogehoge():
i = 0
while True:
print(“{}, {}”.format(i, datetime.datetime.now()))
i += 1
time.sleep(10)def run(**kwargs):
app.run(**kwargs)
[python] Redmine APIで情報を読み込む
# 初めに
プロジェクト管理SWであるRedmineに関して、pythonを用いて情報を読み込む操作をまとめた。
以下の環境で実施した。|||
|—|—|
|os|windows|
|python|3.7.1|
|python-redmine|2.3.0|
|anaconda|4.8.5|# python-redmine
pythonからredmineを操作できるAPI。
チケットやプロジェクトの作成、読み込み、更新、削除が可能。
本記事は読み込みのみを対象とする。# インストール
[anaconda cloud](https://anaconda.org/auto/python-redmine) からインストール。“`bash
$ conda install -c auto python-redmine
“`# 接続
Redmineへ接続するにはRemine側とpython側で設定する必要がある。## Redmine側
管理者権限を有するユーザが、Redmine設定を行う。
[管理] → [設定] → [REST APIによるWebサービスを有効に
【Python】OpenCVで使うパスに日本語を入れてはならない
#はじめに
タイトルの通り。
OpenCVがどうしてもパスを読み込んでくれずにハマってしまったので、どうしたものかと調べてみるとどうやら、パスに日本語を入れると正常に動作しないということがわかった。# 想定ファイル構成
C:
↓
ユーザー
↓
test01.jpg TestOpenCV.py#だめな例
“`python:TestOpenCV.py
import cv2
filename = “C:/ユーザー/test01.jpg” # ファイルパスの「ユーザー」がアウトで読み込んでくれない
img = cv2.imread(filename,0) # img = Noneになる
“`#解決方法
日本語をパスに含めないか、相対パスを使う。# よい例
“`python:TestOpenCV.py
import cv2
filename = “C:/User/test01.jpg” # 「ユーザー」を「User」にする
filename = “./test01.jpg” # 名前を変えられない場合はTestOpenCV.pyから見た相対パスにする
img = cv2.i
兎にも角にもPythonの開発環境をローカルに最速で作る(初学者用)
# 背景
いままで `Node.js` でスクレイピングしていたが、昨今盛り上がりを見せる? `Python` でスクレイピングできるようになっておきたい。
ついでにいうと、機械学習だとかAIだとか、要するに流行りに乗っかりたい…と考えている。
なので、とりあえず動くローカル環境を作って、兎にも角にも `Python` を触りたい。
とか、考えている初学者が、兎にも角にも `Python` を動く環境を作れるようにするためのTips。# 本記事の想定読者
– ビジネスだが、Pythonを触れるようになりたい方
– とにかくPythonを始めたい、触りたい、実験したい方
– Pythonを使って、動的Webサイトをスクレイピングしたい方# 前提条件
– MacOS 10.15 Catalina
– Homebrewインストール済み# 方針
– macOSにはデフォルトで `/usr/bin/python バージョン2.x系` がインストールされているが、本記事では `バージョン3.x` を使えるようにする
– `Python` のバージョン管理は考えない。したがって、 `py
Azure IoT Hub に paho で pub/sub (CA 認証)
こちらのプログラムを SAS トークンから CA 認証に変更しました。
[Azure IoT Hub に paho で pub/sub](https://qiita.com/ekzemplaro/items/5bb6c666d9ddb0127a0f)“次のファイルが必要です。
“`text
/etc/ssl/certs/Baltimore_CyberTrust_Root.pem
devicethird.pem
devicethird.key
“`devicethird.* は openssl で作成します。
“`py:publish_ca.py
#! /usr/bin/python
#
# publish_ca.py
#
# Jan/19/2020
# ——————————————————————
import sys
from paho.mqtt import client as mqtt
import ssl# ————————-
[Python]変数や引数として扱うCallableオブジェクトに対する型アノテーションの書き方
Pythonで関数やメソッドを変数や引数(Callableオブジェクト)として扱う必要が出て来る時があります。
そういった時の型アノテーション周りについて備忘録も兼ねて記事にしておきます。
# 使う環境
– Python 3.8.5
– VS Code
– VS Code拡張機能のPylance(型チェックや補完用)
– ※詳細は以前書いた[[Python]PylanceのVS Code拡張機能をさっそく使ってみた。](https://qiita.com/simonritchie/items/33ca57cdb5cb2a12ae16)などの記事をご確認ください。# まずは型アノテーションの無い状態
とある以下のような関数があり、引数に関数のオブジェクト(`func`)と任意の値(`x`)を受け付けるとします。
“`py
def any_function(func, x):
return func(x)
“`当たり前ですがこれだとVS Code上でマウスオーバーしてみても型などの情報がUnknownとなってしまいます。Pylance(Pyright)など
[python]ライブラリramkanのインストールでエラーになる
[ramkan](https://pypi.org/project/romkan/)はローマ字/仮名変換用のライブラリ。
インストールする際にエラーが起きたので忘備録。## エラー内容
ramkanのインストール
“`
$ pip3 install romkan
“`するとこういうエラーが起きる。
“`
Collecting romkan==0.2.1
Downloading romkan-0.2.1.tar.gz (10 kB)
ERROR: Command errored out with exit status 1:
command: /home/scaruadmin/venv/bin/python3 -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-8y_m14tz/romkan_f9a5712add8043608044b16dab0fc01c/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-8
pythonistaでScroll Viewの実装方法1
# はじめに
地図をスクロールしながら見ている時の様に、
大きな画像の一部を画面に表示して、スクロールさせる。
これは uiライブラリのscroll View を、使用すれば実装できます。# 環境
ios + pythonista3# 使用ライブラリ
ui ライブラリのviewを使用します。
“`
import ui
“`[pythonista ui ドキュメント](omz-software.com/pythonista/docs/ios/ui.html)
pythonistaのドキュメントは、それなりに丁寧に記載されているので 初心者でもある程度
分かります。
英語が優しいのか、自動翻訳様のお力を全面的にお借りしている身でも なんとか理解できました。# とりあえず実装してみる
“`php:scrollview_image.py
#! python3
#
# 20210118 ver001 scrollviewに大きな画像を見て表示してスクロールを実装。
#import ui #scrllviewやimageviewを表示するライブラリ
cla
pythonでスプレッドシートとSlackを連携させてBOTを作ってみる2/2(python+gspread+slackbot)
##はじめに
[前回の記事](https://qiita.com/KScookie/items/580d000d1eda58bfa8b4)では、Slack上でスプレッドシートにあらかじめ登録されている単語をBOTに送信すると、その意味を返してくれるというところまで実装しました。今回はその続きです。
##やりたいこと
* 単語の登録* 登録されている単語の一覧出力
* 単語の削除
* これら全てSlack上で完結させる
##コードを書いていく
コードを追加するのはmy_mention.pyだけです。
“`python:my_mention.py
@respond_to(‘登録:(.*)’)
def mention_func2(message, entry_word):
entry_list = entry_word.split()
entry_len = len(entry_list)
values_list = worksheet.col_values(1)
if entry_len == 2:
gyou = len(values_list
複数ファイルでのParquet・HDF5でのVaex・Daskなどのパフォーマンス比較
先日[単一のファイルでのCSV・Parquet・HDF5におけるPandas・Dask・Vaexの簡単なパフォーマンス比較](https://qiita.com/simonritchie/items/a1a18a36de3c658cf816)をしました。
ただ、普段の作業では時系列データなどでたくさんのファイルを扱ったりすることが多いため、今回は複数ファイル・且つ普通に扱うとメモリが結構きついくらいの行数も含めてざっとパフォーマンス比較をしていきます。
# TL;DR
– 今回試した時系列想定のデータでは思っていたほどVaex + 未圧縮HDF5とVaex + Snappy圧縮されたParquetで差が出ませんでした。取り回しのしやすさやファイルサイズなどを考えるとSnappy圧縮のParquetは結構良い選択に思えます。
– ※前回の単一ファイルでの比較では、1つのファイルで行数がもっとぐぐっと多い場合にはHDF5の方がParquetよりも速かったので、1つのファイルだけで大量のデータが入っているようなケースだとHDF5が輝いてきそうです。
– PandasやDaskは時系
pythonでextension methodを実装してみる
# extension method(拡張メソッド)とは
– [拡張メソッド (C# プログラミング ガイド)](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods)より
> 拡張メソッドを使用すると、新規の派生型の作成、再コンパイル、または元の型の変更を行うことなく既存の型にメソッドを “追加” できます。
# 実装してみる
C#のような拡張メソッドの実現は困難なので、ここでは拡張用クラスで対象型のインスタンスをラップして、オブジェクト指向的なメソッド実行が可能、もしくは、単なる関数として実行可能であることを目指します(継承ではなく、移譲によるプログラミング)。[公式ドキュメント](https://docs.python.org/3/howto/descriptor.html#functions-and-methods)によると、`__get__`を実装することで、関数として振る舞うか、メソッドとして振る舞うか制御可能な
AtCoder 緑が Go で解いてみた
## Go は AtCoder に向いているのか
最近 Go の標準的な package には max 関数がなかったり、型の縛りがかなりキツかったり、色々厳しい面があるという話を聞いたので、Python3 と比較して実際にどれぐらい厳しいのか試してみた。
## ABC188 を解いてみる
### A
https://atcoder.jp/contests/abc188/tasks/abc188_a
バスケでスリーポイントを決めると逆転する展開かどうかを判定するという問題。入力は宣言した型に対して、`fmt.Scan(&a)` で入れられるらしい。
“`a.go
package mainimport (
“fmt”
“math”
)func main() {
var X, Y int
fmt.Scan(&X, &Y)
if math.Abs(X-Y) < 3 { fmt.Print("Yes") } else { fmt.Print("No") } } ``` これで問題無いだろうと思ったが、どうやら `math.Abs()` は引数に `fl
Pygame2 for Multi touch device
Android で python の pygame 動くんだったら、ボタンつけて操作できるとこまでやってみよと…
調べてると、 kivy というのが UI デザイン言語であって、じゃあこれで pygame で Android 向けに作れる、と思いこんでチュートリアルを一個やってみたら、なんかこれ kivy で全部書かないといけないんじゃない?とわかってきた。
ボタンだけ付け足したいのに、 kivy でコーディングするってことになると pygame は使えないからそこでやめて、 pygame でタッチデバイス用に押したりできる関数ないか調べると、あるけど。
あるけど、というか使い方がドキュメントには書いてないので想像がつかない。
でも、できるんだろうなと悶々と3日くらい、でも、でも、できるはずなんだな、ともやもやもやもやしていたが、サンプルコードをつけて本に書いてくれている人がいるのを見つけて、コードを貼って、少し足してやってみた。
pygame 4000 book
https://pygame.itch.io/pygame-book/devlog/204497/new-
Tk.textでログ表示させるときのハマりポイント
#初めに
職場でメモリリーク問題でトラブった調査してたら予想外の罠が見つかったので投稿します。
ちょっと乱文になると思うのですがご容赦ください。#環境
OS:Windows10“`powershell:Anaconda PowerShell Prompt
(base) PS C:\Users\95315> python -V
Python 3.6.10 :: Anaconda, Inc.
(base) PS C:\Users\95315> conda -V
conda 4.9.2
(base) PS C:\Users\95315>conda list
…
tk 8.6.8 hfa6e2cd_0
…
“`#何がしたかったのか
https://tkdocs.com/tutorial/text.html
上記ページのExample: Logging Windowの節を参考して欲しいのですがロガーの内容を引っ張ってTk.textで表示するプログラムを作ってました。
要は下のコードで
Azure IoT Hub の SAS トークンの作り方
参考ページ
[az iot hub generate-sas-token](https://docs.microsoft.com/en-us/cli/azure/ext/azure-cli-iot-ext/iot/hub?view=azure-cli-latest#ext_azure_cli_iot_ext_az_iot_hub_generate_sas_token)“`bash
az iot hub generate-sas-token -n iot-aa
“`実行結果
“`text
$ az iot hub generate-sas-token -n iot-aa
{
“sas”: “SharedAccessSignature sr=iot-bb.azure-devices.net&sig=dsEOdeubZMhRFMab7KhTcijzc%2BNaiYjlDcig8lqTrpE%3D&se=1610847623&skn=iothubowner”
}
“`Python で作成する場合
“`py:main_sas_token.py
#! /usr/bin
元画像処理エンジニアがサイゼリヤの間違い探しをOpenCVで解いてみた
# はじめに
前職で産業機械に使用する画像処理の設定などを作っていたこともあり、[サイゼリヤの間違い探し](https://qiita.com/h-yanai/items/1e33fd93e5cb1ac98398)のアルゴリズムに気になった部分があったので、手を出してみました。
# 今回のお題
さすがに同じものを使うのは芸がないので、今回は下記の画像で間違い探しを行います。
![body.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395414/5d1fb059-7ba4-a43d-17df-dbf8951caeb3.png)
Copyright Saizeriya Co,. Ltd All rights reserved.ここからは間違い探しの答えの情報が乗っています。
もしネタバレが嫌であれば、[サイゼリヤのホームページ](https://www.saizeriya.co.jp/entertainment/)からチャレンジしてみてください。# 変更点…を実装する前に
## 前提の
生物トラッキングのDeepLabCut動かしてみた
# はじめに
DeepLabCutとは、ディープラーニングと画像処理を使用したマーカーレスの生物トラッキングツールです。
主に、動物の行動観察に使用されています。[DeepLabCut 論文](https://arxiv.org/abs/1605.03170)
[DeepLabCut Github](https://github.com/DeepLabCut/DeepLabCut)今回は、Docker内でローカルで使用できるように環境構築しました。
モデルは、既存のモデルを使用して動作確認をしています。[Google Colabでの実行方法](https://colab.research.google.com/github/AlexEMG/DeepLabCut/blob/master/examples/COLAB_DLC_ModelZoo.ipynb)もあるので、グラウド環境が使用できる方は、そちらを使うほうが簡単です。
# 動作確認環境
Dockerを使用して環境を構築しました。
+ Ubuntu 18.04
+ CUDA 10.0
+ cudnn 7.6.4
+