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

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

画像サーバーをLambda移管した時のお話

# 0.はじめに

無尽蔵にアクセスが考えられる画像に対して、まずnginxへアクセスを行い、キャッシュを挟んだ上でリバースプロキシでApacheへアクセスし、S3から画像を取得し、指定サイズにリサイズを行った上で返すアプリケーションを運用していました。

サーバーへのアクセス数は月間で数億あったため、水平スケールを拡大して数年間動いていました。

ただ、ある日突然のアクセススパイクが発生し、サーバーが応答しない事態が発生しました。

応急的にサーバーの水平スケールを拡大して対応しましたが、そもそもこれアプリケーション挟む必要あるのか…と考えてサーバーレスサービスへの移管を検討しました。

旧環境はオンプレ環境だったため、S3へのアクセスも物理的コストが高かったため、Lambdaを採用して環境を移管する事にしました。

# 1.Lambda環境の構築

以前はPHPでAWS SDKでS3から画像を取得⇒imagemagickでリサイズを行っていましたが、Python3.9を採用したため、PILとbotoで画像処理とS3からの画像取得を行いました。

**※パスはお使いのS3に最適化

元記事を表示

Pythonでファイルの文字コードを自動判別

## 背景
### 文字コードでエラーになる
皆さんはPythonを実行する際に、読み込んだファイルの文字コードが予定したものと違ったということはありませんか?
私はpipのライブラリ一覧をエクスポートした際に「UTF-8」と「UTF-16」になるということがあったので、備忘録として残しておきます。

## 自動で文字コードを判別するために
### 使用したライブラリ
**chardet**というライブラリを使用することによって解決できました。
公式ドキュメント:https://chardet.readthedocs.io/en/latest/

### ライブラリをインストール
> $ pip install chardet

### コードサンプル
“`python
from chardet import detect

# まず対象ファイルをバイナリーで読み込む
with open(“<対象ファイル>“, ‘rb’) as bf:
binary_data = bf.read()
encode_data = detect(binary_data)

# 再度フ

元記事を表示

Python 標準ライブラリ types の紹介

Python [types][link-types] ライブラリ。標準ライブラリでありながら名前から何をしてくれるライブラリなのかがわかりにくい一品です。そんな [types][link-types] を紹介します。

頭の片隅に置いておくと、ふとした時に役に立つ、そんないぶし銀なライブラリです。

[link-types]: https://docs.python.org/ja/3/library/types.html

## [組み込み型](https://docs.python.org/ja/3.10/library/types.html#standard-interpreter-types)へのアクセス
組み込みインスタンス None の型は? 関数オブジェクトの型は? types ライブラリはそういった「builtin 空間に置くほどではない、しかしそれでもインタプリタが使用していて存在している型」へのアクセスのための口であります。

“`python
>>> types.NoneType is type(None)
True

>>> def a(): pass
>>>

元記事を表示

python で、代入式(warlrus演算子、セイウチ演算子)を使おう!②(備忘録)

python で、[代入式(warlrus演算子、セイウチ演算子)を使おう!①(備忘録)](https://qiita.com/1023shogo2013/items/2d58893faac32f82cbd0)の続きです。

~~~python
#野菜ジュース屋台の在庫
vegetables = {
‘tomato’: 15,
‘melon’: 9,
‘goya’: 5
}
~~~
## 事例②(代入式なし)
次にトマトジュースの注文が入りました。
トマトは5個使います。
~~~python
def make_tomato_juice(count):
pass

def out_of_stock():
print(‘out_of_stock’)

count = vegetables.get(‘tomato’, 0)
if count >= 5:
make_melon_juice(count)
else:
out_of_stock()
~~~
この場合も、if文の1行目だけで使うcountを無駄に強調してしまっています。

元記事を表示

python で、代入文(warlrus演算子)を使おう!①(備忘録)

### 代入文を使ってコードを短くしよう!

代入文は、waltus演算子:=を使って、変数名への代入と値の評価を1文で行うものです。

## 代入式の発音

~~~python
A := B(A ウォルラス B)
~~~

## 事例①(代入文を使わない場合)
野菜ジュース専門の屋台があります。

野菜の在庫を以下のように定義します
~~~python
vegetables = {
‘tomato’: 15,
‘melons’: 9,
‘goya’: 5
}
~~~
お客さんからメロンジュースの注文を受けて、メロンの在庫を確認してからジュースを作ります。

~~~
def make_melon_juice(count):
return melon_juice

def out_of_stock():
print(‘out_of_stock’)

count = vegetables.get(‘melon’, 0)
if count:
make_melon_juice(count)
else:
out_of_stock()
~

元記事を表示

pathlibでディレクトリを再帰的に検索してファイルリストを表示する

### 実行イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/8bee7373-1a88-df18-d036-3a3fe719bdf8.png)

### ソース
“`get_file_list.py
# -*- cording: cp932 -*-
from pathlib import Path

def main():
get_file_list()

def get_file_list():
parent_path = “C:\\Windows\\boot”
str_header = “ファイルパス”
print(str_header)
p = Path(parent_path)
l = list(p.glob(“**/*”))
for element in l:
if element.is_file():
s_element = str(element)

元記事を表示

【Python】クラス・インスタンス化の学習のため、トランプゲーム「ブラックジャック」をコーディングしてみた

# 概要
現在、プログラミングの勉強をしているが、クラスの概念について理解が乏しく、クラスを使って実現できるコーディングしやすいゲームは何かを考えたとき、ブラックジャックが頭に浮かび、早速コーディングしてみようと思った。

今回はターミナル上でコード実行することを想定してコーディングを進めた。

# 目次
[・ そもそもどういう遊びか?](#そもそもどういう遊びか?)
[・ コード作成フロー](#コード作成フロー)
[・ 実際のコーディング](#実際のコーディング)
[・ 動作結果](#動作結果)
[・ さらに良いコードにするために](#さらに良いコードにするために)
[・ まとめ](#まとめ)

# そもそもどういう遊びか?

ブラックジャックは最初に2枚のトランプカードが配られ、追加でカードを引いていくことで手持ちのカードの合計を21に近づけていくゲームである。
J(ジャック)、Q(クイーン)、K(キング)は10として扱う。
A(エース)は1か10として扱い、基本的に10で扱って21を超えてしまう場合は1として扱う。
21を超えてしまうとドボンで、最下位扱いとなる。

# コード

元記事を表示

InfluxDB v2: 時系列データの取り扱い例

## データの書き込み
2秒間隔で、6つのデータを書き込みます。

“`py:write_temperature.py
#! /usr/bin/python
#
# write_temperature.py
#
# Dec/05/2022
# ——————————————————————
import sys
import time
import influxdb_client
from influxdb_client.client.write_api import SYNCHRONOUS
# ——————————————————————

bucket = “tochigi”
org = “ekzemplaro”
token = ‘****VpyyJg6nskHEwcl6bMsjc1vyzY9b11hSyGiQMOg==’
#
url=”http://localhost:8086″

sys.stde

元記事を表示

PythonでOpenCVからGStreamerを使うためのOpenCV4.6.0のBuildについて

## 概要
GStreamerはデータの送受信をパイプライン的に処理できる仕組みで、映像送受信に使うと便利です。さらに映像送受信時に合わせてOpenCVで映像処理することも可能です。
GStreamerとOpenCVを組み合わせるにはOpenCVからGStreamerを呼び出す方法が一般的です。しかしOpenCVからGStreamerを呼び出すためににはOpenCVをソースコードからビルドする必要があり、加えてWindows環境で使用できるようにするまでに苦労したのでその手順を記載したいと思います。

## 実行環境
– Windows11
– CMake 3.24.2
– Visual studio communication 2019
– GStreamer 1.16.2
– OpenCV 4.6.0
– Python 3.10

## 前提
以下のサイトを参考に進めていきますが、Versionが古いものは新しくしています

https://towardsdatascience.com/opencv-with-gstreamer-and-qt-on-windows-6f0fdb07

元記事を表示

FastAPI+SQLAlchemyでリレーションシップを使いこなす

SQLAlchemyはPythonでよく利用されるORMです。ですが、実際に使ってみたところ、リレーションシップの使い方にくせがあり、苦戦しました。特にSELECT時の挙動が分かりにくかったので、調査したことをまとめておくことにしました。

本記事で使用しているバージョンは下記です。

“`requirements.txt
fastapi==0.79.0
uvicorn==0.18.2
SQLAlchemy==1.4.39
PyMySQL==1.0.2
alembic==1.8.1
“`

# 1対多
1対多は、1つの親に対して複数の子がいるパターンです。
子テーブルが親テーブルのIDを外部キーとして持ちます。

## テーブル定義

親テーブルの定義はこのようになります。

“`python:models/parent1.py
from models.child1 import Child1 # noqa: F401

class Parent1(Base):
__tablename__ = “parent1_table”
id = Column(Integ

元記事を表示

Houdini を Python 3 でやる!!! Part.2

# はじめに

ずいぶん前の Advent Calendar で「[Houdini を Python3 でやる!!!](https://qiita.com/takavfx/items/a019427a1062b41fc8d6)」という記事を書いた。
この時は、様々な DCC ツール(良い意味で Blender を省く)が Python 3 に移行をしている段階で、Houdini もその検証段階にあった。そのため、内容はかなり壊滅的で、結論としては「今はまだ使えないかなぁ」という結論に至っていた。
しかしながら、あれから時も経ち、Houdini のバージョンも 18.5 -> 19.0 -> 19.5 へと経てきた。実際に、現時点で僕は Houdini に関するものはもちろん Python 3 で書いているし、特に問題ないと感じている。
ということで、あの記事だしっぱで名誉挽回の機会も与えないのは酷だと思うので(?)、ちゃんと使えますよ!という記事を書こうと思った次第。
ついでに、Python 3 の最新を使っていく事で何が嬉しいかをちゃんとサンプルを元に残しておこうと思う。

## 実

元記事を表示

f14: selenium / chrome webdriver 動作環境の検証

.
selenium の chrome webdriver + headless
を用いたスクレイピング手法については、
多くの方が情報共有をされておりますので、
実現の詳細は他の方の記事におまかせし、

いくつかの環境で試してみましたので、
動作検証結果をメモします

※ OK 環境、NG 環境、動作不安定環境、ともに
実際の検証結果ですが、OS や 各々の環境により、
必ずしも同じ結果になるとは断定できませんので、
参考程度で捉えてください

※ python は、3.x 系です

※ google chrome + webdriver + headlees で実施してます

※ サンプルとしてヤフー天気の大阪の気温を取得してます

“`python:sample1.py
driver.get(“https://weather.yahoo.co.jp/weather/”)

highs = driver.find_elements(By.XPATH, ‘//*[@id=”map”]/ul/li[8]/a/dl/dd/p[2]/em[1]’)
lowss = driver.fin

元記事を表示

pythonの浮動小数点について(備忘録)

## pythonの浮動小数点は、不正確!?

~~~python
>>> 0.3
0.3
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
>>> 0.3 == (0.1 + 0.1 + 0.1)
False
~~~

合計に違うのは、コンピュータが浮動小数点を表現して処理の際に、「丸め誤差が生じるから」IEEE 754規格のCPUを採用している場合は、python以外でも同じ結果になるらしい…
⇒IEEEは、2**53以上の整数値を表現できない

~~~python
>>> float(2**53) == float(2**53) + 1
True
~~~

## より正確に計算をしたい場合は、「組み込みモジュールdecimal」を使おう!

浮動小数点のまま(不正確なまま)、decimal.Decimal()に引数として渡しても意味がない!
~~~python
>>> import decimal
>>> x = decimal.Decimal(0.1)
>>> x
Dec

元記事を表示

自己紹介 ~たまご?から孵化して最強ピヨピヨ?になる予定系大学生~

# 自己紹介
初めまして。現在、情報系の大学に通っているだいちと言います。
これから、そろぼちプログラミングを頑張ろうと思って登録しました。
授業などでしかプログラミングに触れたことがなく、授業ではpython,C,javaを扱いました。しかし、本当に授業でしか触れたことがないので?よりも酷いレベルです。これから1年かけて頑張っていこうと思います。
よろしくお願いします。

# 年内までの目標
まずは何か成果物を作成してモチベーションを高めたい!!
実際にアプリケーションを一人で作ったことがないので
### 「Webアプリケーションを年内までに作る!!」
ということを目標に頑張っていこうかなと思います。
そのため、毎日どれくらい勉強をしたかを日記程度に書いていこうかなと思います。
とりあえず今後も授業や研究などで触りそうなpythonに触れながら頑張っていこうかなと思います。

# 最後に
これから自分の日記程度に進めていくともに、もし仮に自分みたいに飽き性かつプログラミング全くやったことない人の希望になれたらな思い、3日に1回のペースで書いていきたいなと思います。よろしくお願

元記事を表示

マイコン不要 Poke-Controller+BluetoothでSwitch自動化

# はじめに

表題の通り、このたび、Poke-ControllerでBlutoothを使用した自動化が可能になるライブラリを開発しました。この記事では、Bluetooth自動化環境の導入を解説します。

Python + OpenCVでらんてくんとキュゥべえの類似点を検出する

# 概要
この記事では、顔認証の技術などでも使われる顔の類似度判定を、OpenCVを使い実装したいと思います。
OpenCVは、画像・動画に関する処理機能をまとめたオープンソースのライブラリです。今回はらんてくんとQB(キュゥべえ)の特徴点を比較してどれだけらんてくんがQBに似ているのかAKAZEという検出器で検証しました。

# 類似点判定の例
類似点を判定するために
– 2つの画像の特徴点を抽出する
– 2つの画像の特徴点から類似点を判定する

の手順で進めていきます。

下図の円で囲まれたところが特徴点です。特徴点抽出はその名の通り、画像の中から”特徴的な”ポイントを抽出するアルゴリズムです。使われる特徴としては角 (コーナー) が多いようですが、輝度の勾配なども使われるそうです。
![runtequn_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2520341/00c56d2a-76ed-8d94-9105-07f8d2813cdd.jpeg)![runtequn_03.jpg](htt

元記事を表示

Pythonista3 のKeyboard で、Pythonista3 のコーディングを楽にする。人生を豊かにする。

この記事は、[Pythonista3 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pythonista3) の04日目の記事です。

https://qiita.com/advent-calendar/2022/pythonista3

一方的な偏った目線で、Pythonista3 を紹介していきます。

ほぼ毎日iPhone(Pythonista3)で、コーディングをしている者です。よろしくお願いします。

以下、私の2022年12月時点の環境です。

“`
— SYSTEM INFORMATION —
**System Information**

* Pythonista 3.3 (330025), Default interpreter 3.6.1
* iOS 16.0.2, model iPhone12,1, resolution (portrait) 828.0 x 1792.0 @ 2.0
“`

他の環境(iPad や端末の種類、iOS のバージョン違い)では、意図としない挙動(エ

元記事を表示

【AtCoder】ABC280のA,B,C,D における Python解説

ABC280のA,B,C,D問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、diffは問題の難易度を表す指標です。[Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 829](https://atcoder.jp/users/tsuru1471)
22/1203 現在

# 目次
[はじめに](#はじめに)
[A.Pawn on a Grid](#apawn-on-a-grid)
[B.Inverse Prefix Sum](#binverse-prefix-sum)
[C.Extr

元記事を表示

pythonのcopyについて(備忘録)

## 変数と代入文(=)

オブジェクトを格納する箱ではなく、オブジェクトを参照するための名札をイメージすると良い
pythonの代入文は、オブジェクトそのものをコピーするのではなく、オブジェクトの参照をコピーする!

## オブジェクトをコピー?参照をコピー?
~~~python
>>> your_colar = [‘red’, ‘bule’, ‘black’]
>>>my_colar = your_colar
>>> your_colar
[‘red’, ‘bule’, ‘black’]
>>> my_colar
[‘red’, ‘bule’, ‘black’]
>>> your_colar[2] = ‘green’
>>> your_colar
[‘red’, ‘bule’, ‘green’]
>>> my_colar
[‘red’, ‘bule’, ‘green’]
>>> id(your_colar), id(my_colar)
(1749125224128, 1749125224128)
~~~
オブジェクトそのものをコピーしているのではなく、オブジェクトの参照のみをコ

元記事を表示

OTHERカテゴリの最新記事