Python3関連のことを調べてみた2022年07月20日

Python3関連のことを調べてみた2022年07月20日

Zoomミーティング予定をSlackに流し、Zoom APIを用いて通知しようとしたけどうまくいかなかった話

## はじめに

 山形大学大学院修士1年のHagianです。この記事は[Qiita Engineer Festa 2022 「Zoom API/SDKを使ってみよう!」](https://qiita.com/official-events/86d8555146e1b14fef24)に参加するつもり(つもり)で執筆しました。

## やってみたかったこと

 コロナ禍になってから、大学の講義も一気にオンライン(ミーティングツールを用いたリアルタイム形式)やオンデマンド(資料を参照しながら講義を決められた時間内に受ける形式)等によるものが増えました。最近では講義ごとにPDFファイルなどにまとめられて、ミーティング予定が提示されるようになりました。しかし、毎回開いて確認するのが少し ~~面倒~~ 手間だなと感じていました。

 そこで、このミーティングの予定をSlackに流し、スマホ等の別端末でも確認できるようにしたいと思いました。まとめますと以下の通りです。

* PDFの情報をCSVに変換、保存
* ミーティングID・パスコード抽出
* Slackに予約投

元記事を表示

Pythonでアーキテクチャ図を書いてみた:備忘録

# 概要
アーキテクチャ図のツールがいろいろある中で、Pythonコードを使って簡単に書けるというので試しにしてみました。その備忘録です。

# 準備
環境を整えます。
MacBookを使用していて既に`Python3`はインストール済みです。
それで追加インストールを以下の通り`ターミナル`から実行しました。
`Diagrams`を使用します。これは`graphviz`に依存しているので以下のように両方ともインストールします。
“`zsh:zsh
$ pip3 install diagrams
“`
“`zsh:zsh
$ brew install graphviz
“`

# ソースコード:アプリケーション
アプリケーションのアーキテクチャ図を描いてみるサンプルコードです。
“`Python3:aplication.py
# アーキテクチャ図:アプリケーション
from diagrams import Cluster, Diagram
from diagrams.programming.framework import React
from diagrams.progra

元記事を表示

Docker + Python + Flask で本番環境とテスト環境のポート番号の振り分け方法

## やりたいこと
Dockerのコンテナとのポートフォワーディング(ポート番号指定)を「テスト環境(自端末)」と「本番環境(heroku)」でソースファイルを分ける事なく実現したい。

::: note info
①テスト環境ではホストOSの「8888」番ポートをコンテナの「8888」番ポートと紐づけたい。
②本番環境ではポート番号はheroku側で自動割当されるので、それを利用したい。
:::

ネット調査をしてくと「dockerfile」や「docker-compose.yml」を本番環境用とテスト環境用でわけるような手法がありました(パット見でよく読んでいませんが)が、これは避けたかった。

## 前提
– 本番環境:heroku
– テスト環境:ローカル端末(自分のPC)
– docker-compose.ymlを利用
– dockerfileを利用
– pythonでアプリは実装
– webserverはflaskを利用
::: note info
できるだけ最小の単位で実現したかったという思いから、「do

元記事を表示

色んな高さの「ピー」音のファイルを沢山作る(Python3)

# きっかけ
 超基礎的な音感トレーニングアプリを作ってみたかった。でも、ピアノ音のファイルが見つからなかった(1オクターブ分くらいはあったけど)。
 困ったので自分で作りました。ピアノの音色ではなく「ピー」音ですが、音感トレーニング用なら悪くない?(素人なので分からない)

# 気づき
ピアノの鍵盤って、一つ隣の音との周波数の比はどこも同じらしいです。ということは **周波数だけ考えると鍵盤の白と黒って特に意味ない** ってことですよ。レ(白)→レ#(黒)と、ミ(白)->ファ(白)の周波数比は同じなんですよ。黒はちょっとしか上がらないんだと思ってました。びっくりですよね。

# サンプルコード
**ラ(440Hz)から始まり、ラ#、シ、ド、ド#・・・ラ(1760Hz)と2オクターブ上まで1ファイル ずつ作ります**
– もっと沢山作りたい場合は`np.arange`の25を増やせばok
– 出力先のディレクトリ(`OUTPUT_DIRECTORY`)は先に作っておかないとエラーになります。もしくは`OUTPUT_DIRECTORY = ‘./’`に変えちゃえば動きます
– impor

元記事を表示

pythonのレスポンス指標ー関数時間測定編

# この記事では.
データ分析でのレスポンス測定は以下の記事通り __timeit, time__ を利用します。
基本的にデータ加工などにかかる時間などワンライナーなコードを対して実行します。
https://qiita.com/binary2/items/6560a190b3fdb26cdaf9

“`python
%%timeit
df_test[“date_dt”] = df_test.datetime.dt.strftime(“%Y-%m-%d”)
# 2.18 s ± 55.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
“`
今年度からraspberrypiを利用した開発をすることになったので、分析以外でpythonを利用することになった。
また、システム開発ではないのでセンサーなどのやり取りもしないといけなく、分からないことだらけ orz…

まずは、何の処理に時間がかかっているのか?を把握する必要がある。
ある程度汎用的にレスポンス測定できるようにする。

開発なら最終的にクラスにするべきだが、

元記事を表示

anaconda インストールからPATH設定まで

Anacondaをインストールして、実際に使用できるまでの手順。

**対応OS**
Windows 10

### 1. Anacondaをインストール
公式サイトよりインストーラを取得する。
https://www.anaconda.com/products/distribution

exeを起動してインストーラを実行、選択肢はデフォルトの状態でOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662954/8dfda3f8-a70a-de57-71c6-6773ca1741f8.png)

インストールは結構長いです。(10分以上自分はかかりました)

### 2. PATHの設定
環境変数のPATHに、以下の3つを設定。
– C:\Users\[ユーザー名]\anaconda3
– C:\Users\[ユーザー名]\anaconda3\Scripts
– C:\Users\[ユーザー名]\anaconda3\Library\bin

入力後、PCを再起動。

### 3. 確

元記事を表示

整数aが整数bの倍数かどうかの判定方法

余りが0になれば割り切れる。

a % b == 0

元記事を表示

Mcomixでavif形式をサポート

# はじめに

python3ベースでforkしているmcomixに手を加えてavif形式の画像表示を可能にした。

# 環境
Linux Mint 19.3(おそらく他のものでディストリビューションでも問題ない)
git
python 3以上
pillow-avif-plugin1.2.2以上(公式web: https://pypi.org/project/pillow-avif-plugin/)

# mcomix(python3)ソースの取得
git cloneにて参考になるソースを自分の作業ディレクトリに移行する。

“`
$git clone https://github.com/multiSnow/mcomix3.git
“`

# ライブラリのインストール
avif形式のサポートはpillow-avi-pluginを導入する

“`
$pip3 install pillow-avi-plugin
“`

# avif-pluginのコードを追加
PILライブラリをインポートしているあたりに追加する

“`mcomix/lib/image_tools.py
imp

元記事を表示

Django 作成者 作成日時 更新者 更新日時を管理する

## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり
(PyPI)
記事の中でインストールあり
条件:関連記事 第1回が完了していること

## 関連記事
Django 第1回:[Django Custom User Model の作成](https://qiita.com/startours777/items/706d38e712b0c737a16a)
Django 第2回:[Django 初回ログイン時にパスワード変更を強制する](https://qiita.com/startours777/items/28db625a9bb81a36d4ad)
Django 第3回:[Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する](https://qiita.com/startours777/items/d550ca9b67cea4408a44)
Django 第4回:[Django ランダムかつ有効期限のあるURLを生成し、上位者に承認してもらいアカウントを発行する](https://qiita.

元記事を表示

Python3でQuoted Printableエンコーディングを再現してみた

# Quoted Printable とは
以下、wikipediaからの引用です。
>Quoted-printable(QP encodingとも呼ばれる)は、印字可能な文字(例えば、英数字や等号「=」)を使用した符号化方式であり、8ビットデータを7ビットデータパスで転送するためのものである。インターネット電子メールで使用できるようにするため、Content-Transfer-Encoding として定義されている。

コンピュータ黎明期で資源が少なく、1bitが貴重な昔の時代に、少しでもサイズを小さくしようと7bitで設計されたASCII文字と、utf-8などの他の文字コードの互換性を保つ必要があるシチュエーションにおいて、8bit ↔︎ 7bit のQuoted Printableエンコーディングが用いられることがある。
と解釈しています。

## アルゴリズムの特徴
元のデータがASCII文字を多く含む場合、エンコードされた文字列をほぼそのまま読むことができ、エンコード後のサイズも小さくなる。
日本語など、ASCII文字を多く含まない場合はエンコード後は “=E3=8

元記事を表示

PythonからMermaidの図表を取得する

## メモ
– 実際にはPythonで画像を生成するのではなく、WEBサービスを利用する
– Pythonはただリクエストパラメータを生成するだけ
– 取得すると書いたが、下記PythonコードではURLの生成まで
– ファイル形式はSVGかJPEG
– リクエストデータ量を減らしたい場合は圧縮のURLを利用する

https://mermaid.ink/

## ソースコード
“`
code = “””
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d
section Another
Task in sec :2014-01-12 , 12d
another task : 24d
“””.strip()

state = {
‘code’: code,
}
ascii_bytes =

元記事を表示

Python 3のデバッグ環境構築(Visual Studio Code + Windows 10 with Poetry)

# 概要

* 以下のデバッグ環境を構築する。
* Windows 10
* Python
* Poetry

# 前提条件

* Python 3 インストール済
* Visual Studio Code インストール済
* Visual Studio Code の操作について習熟していること。

# 環境

* Windows 10 21H2
* [Python 3](https://www.python.org/) 3.10.5
* [Poetry](https://python-poetry.org/) 1.1.14
* [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) 1.69.1
* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) v2022.10.1
* [Python Poetry](

元記事を表示

Pythonのisnumeric()の挙動を知らなかった件

# はじめに

え!知らなかったデス?
というわけで、いろいろな文字を調べてみました。

# 試した数値
|式|真偽|備考|感情|
|—-|—-|—-|—-|
|”1″.isnumeric()|True|半角数字|?|
|”1.2″.isnumeric()|False|半角数字小数|?|
|”1”.isnumeric()|True|全角数字|?|
|”一”.isnumeric()|True|漢数字|?|
|”壱”.isnumeric()|True|大字|?|
|”①”.isnumeric()|True|丸数字|?|
|”❶”.isnumeric()|True|丸数字(塗りつぶし)|?|
|”⑴”.isnumeric()|True|カッコ数字|?|
|”Ⅰ”.isnumeric()|True|ローマ数字|?|
|”¼”.isnumeric()|True|1/4|?|
|”٧”.isnumeri

元記事を表示

【備忘録】【Python 】処理の高速化のための知識

* **ベクトルプログラミングによる高速化**
配列の各要素に対して同じ処理を行う場合,
“`python
for x in range(100): x ** 2
“`
のようにfor文を回すより,
“`python
import numpy as np
np.arange(100) **2
“`
のようにベクトル的に処理したほうが速いらしい.
参照元↓

https://stackoverflow.com/questions/10698858/built-in-range-or-numpy-arange-which-is-more-efficient

*

元記事を表示

[AtCoder]Python3でAtCoder水色になるまでに知っておいた方が良いこと

追記(2022/7/17)
セグメントツリーを訂正しました。

# 目的
AtCoderをPythonを用いて解答する場合、知っておいて方がいいルールや事前に用意しておいた方がいい関数などをまとめました。AtCoderやPython初心者~緑色の方を対象に記述しています。
知らない知識がないか流し読みできるよう簡単に書いています。
もし気になる部分があれば詳細は検索してください。

# 前提知識
Python3は実行速度が遅いためPyPy3で提出しましょう。
また提出時にPyPy3になっていることを確認しましょう。

# 用意しておくと便利な関数まとめ
## アルファベットのリスト
アルファベットの文字列を扱う問題が頻出します。
asciiコードを用いるのが妥当かと思われますが、最初のうちは以下のリストをコピペで使用するのが簡単です。
~~~Python3
#文字列リスト
SAL = [“a”,”b”,”c”,”d”,”e”,”f”,”g”,”h”,”i”,”j”,”k”,”l”,”m”,”n”,”o”,”p”,”q”,”r”,”s”,”t”,”u”,”v”,”w”,”x”,”y”,”

元記事を表示

ONNX備忘録

本記事ではディープラーニングの領域で耳にすることの多い**ONNX**について、内容についてのまとめと検証を行なっていこうと思います。
本記事ではディープラーニングのモデルをONNX形式に変換した際の推論速度向上にフォーカスしており、Rasberry PiなどのエッジAIの領域で推論速度の要件を満たすための選択肢の1つとして、読者の方の参考になればと思います。

# ONNXについて

ONNXは**Open Neural Network eXchange**の略で、DeepLearningモデルを様々なフレームワーク間で交換するためのフォーマットです。読み方は**オニキス**です。

Tensorflowを用いて学習させたモデルをpytorchで推論させる際にモデルをそのまま用いることはできませんが、モデルをONNX形式に変換すれば可能となります。
今回の記事では、このフォーマットの互換性ではなく、ONNX形式でモデルを推論させた際の**推論速度の向上**と、副次作用としての**精度の劣化**について主にまとめます。
![image.png](https://qiita-image

元記事を表示

tkinterを使用して、動画にエフェクトをかけてみた。

## 目的
pythonのtkinter用いてGUIを操作し、動画にエフェクトをかけて再生します。

## 実行環境
Python version: 3.9.13
OS: Windows 10

## GUIイメージ
動画ファイルを読み込んで、サイズを枠に合わせて縮小し、左のキャンバス上に映し出します。再生、停止、最初に戻る、閉じるボタンを作っています。エフェクトは、ttk.Comboboxを使って選択します。

![ャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/176158/419734da-e45d-e023-caae-a9d511e5a3fa.png)

## プログラム
動画ファイルを読み込むと、threadingがstartします。threadingは、main_thread_func関数内のwhileをループしています。ボタンを押すと、フラグが立ち、フレームを読み出し動画を再生します。Comboboxで設定したエフェクトは、“`effect_image“`の関数で処理されます。
`

元記事を表示

Pythonでランダムに生成した整数を足し合わせて特定の数にするときの備忘録

# 概要
– あるテストをするのにレコード数1000のCSVを作りたい
– ただし、ランダムに生成した整数を(1000レコード分)足し合わせたときに特定の数(今回は`32767`)にしなければならない

# 実装1
“`python
import random

def gen_int():

comb = []
for i in range(1,1001):
next_max_value = 32766-sum(comb)
if next_max_value == 0:
comb.append(0)
else:
comb.append(random.randint(0,next_max_value))

“`
こういう風に書けば、1000レコード分足し合わせたときに32767になるのだが、、、中身を確認してみると途中から全部`0`になっていてデータとして使い物にならなそう。

“`csvs:csv
27560
3412
1513
100
169
6
3
2
0
0
0

元記事を表示

VOICEVOXのAPIからリップシンク用のlabファイルを生成

GUIには機能があるが、API経由での機能が見つからなかったので。

“`python
def get_labdata(jsondata):
labdata=””
now_length=0
timescale = 10000000/float(jsondata[“speedScale”])
for i in jsondata[“accent_phrases”]:
for j in i[“moras”]:
if j[“consonant_length”] is not None:
labdata += str(int(now_length*timescale)) + ” ”
now_length += j[“consonant_length”]
labdata += str(int(now_length*timescale)) + ” ” + j[“consonant”] + “\n”
labdata += str(int(now_length*ti

元記事を表示

tweepyで自動フォロー

タグを拾いフォロー状態で条件分岐させるコードを書きます。
まずKeys.pyにトークン類をまとめて書きます。
“`python
import tweepy

class Apikeys:
CK = ” # Consumer API key
CKS = ” # Consumer API Secret key
AT = ” # Access token
ATS = ” # Access token secret
auth = tweepy.OAuthHandler(CK, CKS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

“`
follow.pyも書きましょう。
“`python
import time
import tweepy
from keys import Apikeys

api = Apikeys.

元記事を表示

OTHERカテゴリの最新記事