Python関連のことを調べてみた2023年07月28日

Python関連のことを調べてみた2023年07月28日

Jinjaテンプレートから自作関数を呼び出す

ご閲覧ありがとうございます。オレンジ羽のlibra189です。
FlaskのJinjaテンプレートでFlask側で定義した自作関数を呼び出したいと思ったのですが、少し面倒だったので記録として残しておきます。

# 検証環境

| 環境 | バージョン |
| — | — |
| OS | MacOS 12.3 |
| Python | 3.9.6 |
| Flask | 2.0.2 |
| Jinja | 3.1.1 |

# 解決したい問題

例えば、Flaskで動的に画面に値を表示したい時、Jinjaにはそのような関数は用意されていないため、一般的にはテンプレート呼び出し時に結果を引き渡す必要があります

コード例

“`python:app.py
from flask import Flask, render_template

app = Flask(__name__)

def get_host_name():
return “Qiitan”

@app.route(“/”)
def root():
return render_template(“root.ht

元記事を表示

#0007 pythonのparserとは。

## はじめに
– 開発中の日付データをtimestampへ変換するためにparser関数を利用した。
– あまり馴染みがなかったため、調べてみた。

## parseとは
– まず英単語としての`parse`とは「解析する。分割する」という意味。
– 語源は、古フランス語のpart「分け前、部分…」、ラテン語partem(主格はpars)「一部、一片…」など。

[参考](https://www.etymonline.com/jp/word/parse#:~:text=13%E4%B8%96%E7%B4%80%E4%B8%AD%E9%A0%83%E3%80%81%E3%80%8C%E5%88%86%E5%89%B2%E3%80%81,%E3%81%A8%E9%96%A2%E9%80%A3%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82)

## parserを使った日付の変換
– parserについては述べると膨大になりそうなため、今回は仕事で用いた「日付の変換」のみを扱いたいと思います。
– parse関数を利用し

元記事を表示

Overture Mapsの建物データ(7億件)からDuckDBのPython APIで日本のデータだけ取得してみた!

https://www.itmedia.co.jp/news/articles/2307/27/news089.html

Overture Maps Foundationから、とうとうオープン地図データがリリースされましたね!

世間一般ではどんな反応なのかわかりませんが、界隈では割と盛り上がっている様子です。

Overture Mapsは構造化され、品質が保証された使いやすい地図データをオープンにするべく、整備しているとんでもない規模のプロジェクトで、以下のようなビッグテックが開発を行なっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203944/f3dd515c-0593-72bf-2631-89dea2cfab18.png)

2023/07/26に「Overture 2023-07-26-alpha.0」という名称で初めてデータがリリースされました。
データは4種類に分かれており、個別にライセンスが適用されていますが、基本的には「概ね自由に利用できる」ライセンス

元記事を表示

【Python】Bluetoothライブラリpybluezがインストールできないときの対処法

# import bluetoothを使いたい

どうやらC++の環境とWindows-SDKのインストールが必要らしい

https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/

1—↑のサイトからSDKをインストール

https://self-development.info/%E3%80%8Cmicrosoft-visual-c-14-0-or-greater-is-required-%E3%80%8D%E3%81%8C%E5%87%BA%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/

2—↑のサイトを見てC++の環境とcl.exeの環境変数を設定する

https://github.com/pybluez/pybluez/releases

3—↑のサイトから生のライブラリをダウンロード

4—上記のライブラリのディレクトリにcdして
“`console
python setu

元記事を表示

AiFlowと DAG内でできるタスク生成について超ざっくり書いてみる

# AirFlowとは?
一言で表すと **実行タスクのワークフロー管理プラットフォーム**です。
対応言語はPythonのみです。(2023/07時点)

「DAG」と呼ばれる、AirFlow上でPythonコードを実行するための書き方を使用してます。
もう少し詳しく書くと、
Pythonコード内で処理タスクを生成し、各タスクに依存関係を持たせます。
AirFlowはワークフローを管理してるので、「DAG」で定義されたタスクを順番に実行している、ということです^^

# タスクの生成
処理したい内容によって、**動的**にタスクを生成、**静的**にタスクを生成することを使い分けましょう。

##### 静的にタスクを生成したい場合
主に日次で動かすチェック処理や、スナップショット作成や、簡単な単体テストで用いることが多いです。
 ・処理の内容が固定で決まっている場合
 ・処理するデータが単一の場合

##### 動的にタスクを生成したい場合
外部から複数データが連携される場合や、洗い替えDBの登録データ数に応じてなど、ユーザー起因で処理が実行されるケースで用いることが多いです。

元記事を表示

【Django】クエリセットにsetattr関数を使ってフィールドの値を正しく値を更新する

# 概要
Djangoにて、与えられたリクエストのデータを使ってオブジェクト(モデル)のフィールドの値を更新する際、フィールドの値が正しく更新されない状態を`setattr`を使って解決できたので、その方法を紹介します。

## 正しく更新されない関数

“`py
from .models import Product

def update_objects(objects, request, apple_key, banana_key):
for obj in objects:
apple_value = request.get(f”{apple_key}_{obj.id}”)
banana_value = request.get(f”{banana_key}_{obj.id}”)
obj.apple_key = apple_value
obj.banana_key = banana_value
obj.save()

obj_product = Product.objects.get(id=i

元記事を表示

画像の差分取得

# 研究で使ったコード

Google Colabで動かしています

“`python
import cv2
from google.colab.patches import cv2_imshow

def image_diff(image1_path, image2_path):
#画像を読み込む
img1 = cv2.imread(image1_path)
img2 = cv2.imread(image2_path)

#差分を計算
diff = cv2.absdiff(img1, img2)

#diffを白黒にしたい場合
# diff = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)

#画像を表示
cv2_imshow(diff)

if __name__ == “__main__”:
# 2枚のカラー画像のパスを指定
img1_path =””
img2_path =””
image_diff(img1_path,img2_

元記事を表示

ラズパイとLCDディスプレイでお天気ディスプレイを作る

# 完成品

これです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102797/60acb75c-ce86-7846-3839-e0fb5eba68b6.png)

気象庁から天気予報データを取得して
今日、明日の天気、最高気温、最低気温、降水確率
を表示します

# 古いラズパイを久々に起動したら…

今回使った Raspberry Pi の OS は jessie
古いバージョンなので、サポートが終了しています

“` $ sudo apt-get update “`
を実行したところ、aptの参照先が無くなっていてエラー発生

“`/etc/apt/sources.list“` を書き換えて対応しました

“`bash:/etc/apt/sources.list
pi@raspberrypi:~ $ sudo cat /etc/apt/sources.list
deb http://legacy.raspbian.org/raspbian/ jessie main

元記事を表示

pickleファイルの中身をVSCode上で確認しよう ~ vscode-pydata-viewerを使いこなす ~

## Abstract

pickleで保存したバイナリファイルやPytorchのパラメータの情報を保存したバイナリファイルは、通常はVSCodeから中身を確認できません。

vscode-pydata-viewer はそんなお悩みを解決する拡張機能です。

https://marketplace.visualstudio.com/items?itemName=Percy.vscode-pydata-viewer

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483769/b5fb19be-63e7-2467-f4a3-a75c6490800d.png) 図: 拡張機能を導入したことで保存したpickleファイルを確認している様子

とりあえずインストールするだけで十分に役に立つでしょう。
本記事では、この vscode-pydata-viewer を紹介して、表示をカスタマイズする方法まで紹介します。

## 環境

– Python 3.10.4
– Windows 10

##

元記事を表示

python + Flask + docker でwebアプリケーションを動かす

# 概要
EC2インスタンス上でdockerとdocker-composeをインストールして動かす方法メモ
OS: amazonLinux2

# ドキュメント
https://flask.palletsprojects.com/en/2.0.x/tutorial/
https://flask.palletsprojects.com/en/2.0.x/installation/
https://flask.palletsprojects.com/en/2.0.x/quickstart/

# dockerインストール
インストール -> 起動 -> ec2-userでも動かせるように権限調整
“`
$ sudo su –
# yum update -y
# amazon-linux-extras install -y docker
# systemctl enable docker
# systemctl start docker
# usermod -aG docker ec2-user
“`

# docker-composeインストール
docker-composeのバージョ

元記事を表示

Ansible(panosモジュール)×Jinja2でPaloaltoのログ採取を自動化してみた

# 1. 概要

幣チームでは、月に1~4個のPalo Altoを構築しており、作業後にコンフィグとコマンドに加えスクリーンショットでログ採取していた。しかし、ログはほとんど見返されておらず、取得にも時間がかかっていて、退屈でバリューの低い作業が数年続いていた。
そもそも論としてやめればよい話なのだが、自動化実践の良い機会と思い活用することにした。
今回はPalo Alto機器へのコマンド実行・設定変更操作が可能なpanosモジュールとJinjaテンプレートを組み合わせ、これまでのログ採取作業を完全に自動化し、40~50分程度の作業を20秒以下に収めることができた。
![asis-tobe.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533083/ffaa0634-407f-0298-7b82-ca659ab6cfa5.png)

# 2. 想定対象読者
本記事の想定読者は次の通り。
– ネットワーク自動化の事例を知りたい方
– Python、Ansibleについてある程度知識がある方

元記事を表示

【google colaboratory】入門:jupyter notebookの基本操作と使い方

## 【google colaboratory】入門:jupyter notebookの基本操作と使い方

こんにちは。今回は、google colaboratoryについて初心者エンジニアに向けて、基本操作と使い方を紹介します。

google colaboratory(以下、colab)は、クラウドベースのpython開発環境であり、jupyter notebookをベースとしています。colabを利用することで、自分のデスクトップやラップトップにpython環境をインストールせずに、ブラウザ上でpythonコードを実行できます。また、colabは無料で提供されており、googleのインフラストラクチャを使用しているため、高速な処理や大規模なデータセットの処理も行えます。

本記事では、colabの基本操作と使い方について詳しく解説していきます。colabの基本的な使い方から、セルの種類やショートカットキー、マークダウンセルの使い方、グラフの描画方法、そしてnotebookの共有方法までを順に紹介します。

### jupyter notebookとは?
jupyter noteb

元記事を表示

python maya More than one object matches name

“`python
sel = cmds.ls(sl=True, long=True) # add long=True
grp = cmds.listRelatives(objSel, allDescendents=True, fullPath=True, type=’mesh’) # add fullPath=True
“`

元記事を表示

python maya add curves transform to sets

“`python
import maya.cmds as cmds

def create_nurbs_curve_set(set_name):
if not cmds.objExists(set_name):
cmds.sets(name=set_name, empty=True)

def add_nurbs_curves_to_set(set_name):
curve_transforms = [cmds.listRelatives(i, p=1, type=’transform’, fullPath=True)[0] for i in cmds.ls(type=’nurbsCurve’, o=1, r=1, ni=1)]
for c in curve_transforms:
cmds.sets(c, add=set_name)

def main():
set_name = “Sets”
create_nurbs_curve_set(set_name)
add_nurbs_curves_to_se

元記事を表示

Python3_CMDでPySimpleGUIをインストール ファイルがないエラー

Quita超初心者の初めての質問です。不思議なエラーで困っております。
お分かりになる方のご連絡をお待ちしております。解決方法をお教えて下さい。
宜しくお願い致します。

win10 64bit CMDでPySimpleGUIをインストール作業中です。
pythonインストール画面(公式サイト)でいつもpassは☑して通しています。
環境変数の編集画面でも パスは正常です。
¥Python¥Ptyhon310¥Python310¥Scripts¥
¥Python¥Ptyhon310¥Python310¥

py -m pip install PySimpleGUI  は成功しました。

py m- pip list     が失敗しています。解決したいです。

C:\Users\user>python -V
Python 3.10.2 成功しています。

C:\Users\user>pip -V
pip 21.2.4 from C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pip

元記事を表示

Seleniumを使用しないスクレイピング

# はじめに:
普段スクレイピング作業を行う際にSeleniumを利用しておりましたが、requestsを使っても同じようなことができないのかな、とふと気になったので試してみました。

なお、以下の記事の内容はChatGPTを使って作成しました。
https://chat.openai.com/share/3d2cd98a-26ea-49d2-b166-3913230053e5

# 環境
mac 13.4.1
Python 3.10.0

# 実際の手順
### 1. Flaskを使用したテスト用Webサイトの作成 ###

既存のWebサイトに直接スクレイピングを行うのは気が引けたので、Flaskを使用してログイン機能を持つWebサイトを作成します。
ログイン後には、ユーザーによる任意の入力を受け付け、特定の入力に対して異なるレスポンスを返すようにします。

“`app.py
from flask import Flask, request, render_template, redirect, url_for
from flask_login import LoginManag

元記事を表示

np.mean()

“`
import numpy as np
np.mean( )
“`

()の中で指定した列や行に沿った平均を計算する(ただの平均)

元記事を表示

fillna()

データの中の欠損地であるNaNを()の中の文字列にする

元記事を表示

Leetcode 100. Same Tree

# Problem
この問題は、二分木の構造と値の両方が同一であるかどうかを判断するというものです。

> Given the roots of two binary trees p and q, write a function to check if they are the same or not.

この場合は同一。
![image](https://assets.leetcode.com/uploads/2020/12/20/ex1.jpg)

この場合は非同一です。
![image](https://assets.leetcode.com/uploads/2020/12/20/ex2.jpg)

https://leetcode.com/problems/same-tree/description/

## Approach #1 Depth-First Search (DFS) using Recursion
深さ優先探索(DFS: Depth-First Search)を使って解くことができます。

“`Python
class Solution:
def

元記事を表示

世界最先端の画像処理モデルCoAtNETを自作してcifar10を解いてみた

こんにちにゃんです。
水色桜(みずいろさくら)です。
今回は現在(2023年7月27日)、世界最先端の画像処理モデルであるCoAtNETを自作してみようと思います。
記事中で何か不明点・間違いなどありましたら、コメントまたはTwitterまでお寄せいただけると嬉しいです(≧▽≦)

# はじめに

まず今回作成したモデルの精度を示します。
“`
Epoch 1/25
loss: 2.0099 – accuracy: 0.2414 – val_loss: 1.7703 – val_accuracy: 0.3466
Epoch 2/25
loss: 1.6918 – accuracy: 0.3677 – val_loss: 1.5752 – val_accuracy: 0.4208
Epoch 3/25
loss: 1.5531 – accuracy: 0.4261 – val_loss: 1.4964 – val_accuracy: 0.4468
Epoch 4/25
loss: 1.4712 – accuracy: 0.4577 – val_loss: 1.4931 – val_ac

元記事を表示

OTHERカテゴリの最新記事