Python3関連のことを調べてみた2021年01月18日

Python3関連のことを調べてみた2021年01月18日

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 main

import (
“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
+

元記事を表示

pythonからgoogle cloud platformのinstanceを動かすまで

最初に認証キー作ってからでないとだめ
[サービス アカウントとして認証する  |  Google Cloud](https://cloud.google.com/docs/authentication/production)

[Python 用の Cloud クライアント ライブラリの使用  |  Compute Engine ドキュメント  |  Google Cloud](https://cloud.google.com/compute/docs/tutorials/python-guide)

> python3 -m pip install –upgrade google-api-python-client

[python-docs-samples/create_instance.py at master · GoogleCloudPlatform/python-docs-samples](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/compute/api/create

元記事を表示

写真を読み込んで手書きスケッチ。zoom機能付。作ってみた。

# はじめに
写真に手書きスケッチを描きこむツールは、いくつか見つかります。
しかし、ズーム機能のついたツールが見つかりませんでした。
標準のフォトやマークアップは拡大率に限界があって 使いにくかった。
だから、今回作ってみました。
uiもスクリプトで作成してみたので、1ファイルで動きます。

 コードをバンバン書ける方には 怒られそうな程注釈を書き込んでいます。
自分用のメモですが、Python勉強し始めの方には スクリプトの動作が追いやすい
とおもって残しています。
あと、試行錯誤の結果 使っていない関数が少し眠っています。

クラスを始めて使って書いてみました。

# 環境
ipad + pythonista3

# 要件
・写真を読み込んで、手書きスケッチを書き込める。
・線の色・太さは 数種類づつ用意した。
・undo機能も実装した。
・拡大縮小(zoomin zoomout)機能の実装。zoomは左上を起点にされます。
・拡大機能の実装に合わせてscrollviewを実装。

# 苦労した点
・scrollviewの実装方法とスクロールと拡大縮小の連携。
・touchイベン

元記事を表示

Synology DSMのタスクスケジューラーでpython実行時に起こるインポートエラーの回避方法

# 起こったエラー
Synology の DS118 内にあるPythonのスクリプトを、DSM のタスクスケジューラーから実行しようとしたところ、モジュールのインポートエラーが起きました。

“`:DSMから届いたメールに記載されたエラー
Traceback (most recent call last):
File “hoge.py”, line 1, in
import tweepy
ModuleNotFoundError: No module named ‘tweepy’
“`

おかしいぞ?
SSH接続ではできるのに。。

しかもこれ、以前`requests`でも同様のエラーに遭ってしまいましたが、その時はそれほどタスクスケジューラーでやる必要性がなかったことから、放置していました。
ですが今回はタスクスケジューラーでやる必要があったので、本腰を入れて対処してみることに。

分からないなりに調べると、パスが通ってない感じに思え。
おそらく、SSHで実行するのとタスクスケジューラーで実行するのと、微妙に異なるのでしょう。

というわけで、以下の

元記事を表示

[Django] Formからの値の取得

#実行環境
実行環境は以下の通りです。
Python3 — Python 3.9.0
Django — 3.1.3

#Djangoで、Formからの値の取得について
今回、Djangoでwebアプリを作成していく際にFormからの値の取得方法に困ったので、メモがてらに記述しておきます。
また、Djangoの学習を始めたばかりで非効率的なコードばかりですが、何かあればご指摘いただければ幸いです。

##シチュエーション
Formで選択したオブジェクトの値を取得し、そのオブジェクトのチェックボックスをTrueにするというシチュエーションです。具体的には、事前に登録しているスケジュールをFormで選択し、そのスケジュールを「今月のスケジュール」と設定し、表示するという実装を行いました。

Scheduleのモデルを以下に示します。

“`models.py
class Schedule(models.Model):
“””スケジュール”””
holdmonth = models.CharField(‘開催年月’, help_text=”○年○月”, unique=Tr

元記事を表示

Azure IoT Hub に paho で pub/sub

次にあるプログラムに、.env を使って汎用性を持たせました。
[Azure IoT Hub に paho で publish](https://qiita.com/ekzemplaro/items/8a2f8ac7bae35a9c91d4)
[Azure IoT Hub に paho で subscribe](https://qiita.com/ekzemplaro/items/ceb7e085a9c30b07ae2c)
generate_sas_token.py は変更ありません。

“`text:.env
IOTHUB=’iot-aa’
DEVICE=’pansy’
MAIN_KEY=’2eQ2wF5OjZLP7tq6PG123456789RTfAnMJbZ8wtJPu4=’
“`

“`py:paho_publish.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# paho_publish.py
#
# Jan/15/2021
# —————————————–

元記事を表示

Dlibのインストールでエラーが出るときの対処(Ubuntu)

# 環境

– WSL Ubuntu 18.04
– Python3 3.8.5

# エラー
(全文)

“`bash
Running setup.py install for dlib … error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘/tmp/pip-install-3kh7uz0l/dlib/setup.py'”‘”‘; __file__='”‘”‘/tmp/pip-install-3kh7uz0l/dlib/setup.py'”‘”‘;f=getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__);code=f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__,

元記事を表示

python3.9には誰も注目していない新機能が・・・

A. ある。

関連記事
https://qiita.com/sh1ma/items/3d9280084c340b4cd775

コードみてね

“`python
@lambda f: lambda *args: print(f(*args)) # ←動く!!(3.8まではこれ動かなかった)
def f():
return “hello”

f() # -> hello
“`

ウケるw

元記事を表示

AWSのlamdaでfirebaseを使う時に沼った話

ハッカソンに出場するためのプロダクトを開発している時に、大沼にハマったので、記事にしてみようと思います。
半年ほど前の記憶を辿りながらですので、ところどころ抜けてるかもしれません。
また、awsのアカウント作成や、aws cliのインストールなど、細かい部分に関しては、記載しませんので、ご了承ください。

#環境
・MacOS Catalina

“`
$ sw_vers
ProductName: macOS
ProductVersion: 11.1
BuildVersion: 20C69
“`

#やろうとしていたこと
iosのカメラで表情を認識した時に、写真を撮影し、AWSのS3にアップロード。アップロードが完了したことをトリガーに、lmada関数が走り出し、AWS Recognitionという表情認識APIにアップロードされた画像を渡す。そして、APIから帰ってきた表情の数値をfirebaseに保存する。保存された情報をブラウザが取得し、グラフとして表示するというプロダクトを作ろうとしていた。

※今回は、私自信がs3に画像がアップロードされてからfirebaseに保存する

元記事を表示

DBから関数名を読みだして動的に実行する

# フォルダ構成

~~~
project
|
 ├ __init__.py
 ├ apps.py
 ├ models.py
 ├ routes.py
 ├ views.py
~~~

# Modelをつくる

まずはmodels.pyに関数リストをあらわすクラスを規定します。

~~~models.py
from django.db import models
from django.db.models.signals import post_save

class FuncList:

func_id = models.CharField(max_length=50)
callback = models.CharField(max_length=50)

def get_func_id(self):
return self.func_id

def set_func_id(self, func_id):
self.func_id = func_id
self.save()

def get_

元記事を表示

WindowsでPythonの仮想開発環境を作る

#はじめに

pythonをWindowsで使いたいな~と思って色々調べていたんですが、環境構築のところで右往左往してしまったので、備忘録としてアウトプットしておきます。VScodeでコードを書きます。

##環境
・Windows 10 Home
・Visual Studio Code

前提として、python自体がWindowsにインストールされていることを確認してください。
インストールは[こちら](https://www.python.jp/install/windows/index.html)からできます。python japanの公式ページです。

#コマンドを打っていく
Windowsの場合は、powershellを管理者として開いて、

“`
Set-ExecutionPolicy RemoteSigned
“`
というコマンドを打ちます。これはスクリプトの実行をローカルファイルのみ許可するというものです。他にもオプションがありますので、気になった方は[こちら](https://cheshire-wara.com/powershell/ps-cmdlets/seq

元記事を表示

Q. ジェネリクスみたいに[]から値取るやつやりたいか?

Q. ジェネリクスみたいに[]から値取るやつやりたいか?

A. はい。(`__class_getitem__`を使う)

“`python
class Hello:
def __class_getitem__(self, v):
return v

print(Hello[“sh1ma”])
“`

元記事を表示

OTHERカテゴリの最新記事