- 1. [Python] 例外処理について
- 2. PHP, Python の正規表現で、何故 `\\\` でバックスラッシュがエスケープ出来ているのか
- 3. Whisperのコードを斜め読みする
- 4. `pip install “numpy==1.26″`はnumpy 1.26の最も大きいバージョンでなく最も小さいバージョンがインストールされる
- 5. なぜパッケージ管理ツールを使わないのか? pipでの手動管理はもうやめよう
- 6. [Python]リスト内包表記について
- 7. Python パッケージ管理ツール比較: Poetry vs Pipenv vs Rye
- 8. [Python] 関数定義の基本と使い方
- 9. ComfyUIにおいて.jpgや.webpで画像を保存する方法(メタデータの扱いも含む)
- 10. Pythonで行う正規QQプロット
- 11. [Python] 変数とデータ型について
- 12. VSCodeのPythonデバッガを動かす
- 13. [Python] リスト、タプル、辞書の違いまとめ
- 14. OpenCV を使ってお絵かきアプリを作る方法(改良版)
- 15. 【AWS】EC2に新しいVersionのPythonをインストール
- 16. 【Python】座標を取得する方法
- 17. 【Python】プロパティの便利な使い方5選
- 18. 【Python】Flake8について調べてみた
- 19. Docker内でFastAPIを使うときのログ出力
- 20. Python_Googleアラート_240706
[Python] 例外処理について
## はじめに
こんにちは!今回も、備忘録を兼ねて。
プログラムを書いていると、予期せぬエラーが発生することがあります。
エラーが発生するとプログラムは処理を停止してしまいますが、エラー発生時の処理を適切に行うことで、プログラムを途中で止めずに処理を継続したり、ユーザーに分かりやすいメッセージを表示したりすることができます。このようなエラー発生時の処理を、「**例外処理**」と呼びます。
今回は、例外処理の基礎から振り返ってみます。## 例外処理の基本
Pythonの例外処理は、`try`、`except`、`else`、`finally`というキーワードを使って行います。基本的な構文は以下の通りです。
“`python
try:
# 例外が発生する可能性のある処理
except 例外型:
# 例外が発生した場合の処理
else:
# 例外が発生しなかった場合の処理
finally:
# 例外発生の有無に関わらず実行する処理
“`* **tryブロック:** 例外が発生する可能性のある処理を記述します。
* **exceptブロッ
PHP, Python の正規表現で、何故 `\\\` でバックスラッシュがエスケープ出来ているのか
バックスラッシュ自身に対する正規表現で、バックスラッシュ 3個で OK な説明を実際の仕様ではなく、日曜プログラマが理解可能なレベルで記載したい。[^1]
[^1]: 過去にあった同様の記事は見当らない、埋もれてる or 失われているので、、、
当然 `’//’` (PHP)、`r””` (Python) は使わない前提での文章となる。
## 前知識
– PHP, Python では、正規表現エンジンレベルでのエスケープ(PHP では PCRE)の他に、言語側の文字列としての展開を抑制するエスケープの2段階が必要
– 16進表記の文字列(`\x5c`) は(正規表現エンジンレベルでは)、エスケープの必要が無い(当たり前)一部 `pcregrep` [^2] を用いて説明しているが、これは言語仕様によるノイズを排除するためのもの。
[^2]: PCRE の純正 grep。インストールの仕方などは省略
“`
# STRING => 検索文字列
# REGEXP => 正規表現
% echo STRING | pcregrep ‘REGEXP’
“`
Whisperのコードを斜め読みする
今回はWhsiperについてのコードの斜め読みのメモ.
# ソースコード
OpenAI/Whisper
https://github.com/openai/whisper# 参考文献
## 本家解説
https://openai.com/index/whisper/
## 本家論文
https://cdn.openai.com/papers/whisper.pdf
## 日本語解説
ThothChildrenチャンネルの動画
なぜパッケージ管理ツールを使わないのか? pipでの手動管理はもうやめよう
Pythonのパッケージ管理と言えば、まず思い浮かぶのはpipです。
pipは非常に強力なツールで、パッケージのインストールやアップデートをシンプルに行えます。
しかし、プロジェクトが大きくなるにつれて、依存関係の管理や仮想環境の維持が難しくなります。
そこで登場するのがパッケージ管理ツールです。
以下に、pip単体での管理と、PoetryやPipenv、Ryeのようなパッケージ管理ツールを使う場合の違いやメリットを挙げてみます。## pip とパッケージ管理ツールを使った場合の違い
1. **依存関係の自動管理**:
– **pip**: 依存関係の手動管理が必要です。複数のパッケージが異なるバージョンの同じライブラリを必要とする場合、手動で調整する必要があります。
– **パッケージ管理ツール**: 依存関係を自動で解決してくれます。例えば、Poetryなら`poetry.lock`、Pipenvなら`Pipfile.lock`、Ryeなら`requirements.lock`を使って依存関係のバージョンを固定し、一貫性のある環境を維持し、開発メンバー間の環境、開
[Python]リスト内包表記について
## はじめに
こんにちは!
今回も、備忘録を兼ねて。プログラミングをしていると、もっと効率的にコードを書きたくなることがあります。
Pythonのリスト内包表記は、そんなときに役に立つテクニックです。
forループを使った処理を、より短く読みやすく記述することができます。それでは、基本から見ていきましょう。
## リスト内包表記の基本
リスト内包表記は、**新しいリストを作成** するための簡潔な方法です。
基本的な構文は以下の通りです。“`python
[式 for 変数 in イテラブルオブジェクト]
“`* **式:** 各要素に対して適用する式
* **変数:** イテラブルオブジェクトの各要素を格納する変数
* **イテラブルオブジェクト:** リストやタプルなど、要素を順番に取り出せるオブジェクト簡単な例を見てみましょう。
“`python
# 1から10までの数のリストを作成
numbers = [i for i in range(1, 11)]
print(numbers) # 出力: [1, 2, 3, 4, 5, 6, 7, 8
Python パッケージ管理ツール比較: Poetry vs Pipenv vs Rye
Pythonの開発環境を整えるうえで、パッケージ管理ツールの選択は非常に重要です。
今回は、3つのツール – Poetry、Pipenv、Ryeを比較してみます。https://python-poetry.org/
https://pipenv.pypa.io/en/latest/
https://rye.astral.sh/
## 比較表
| 項目 | Poetry | Pipenv | Rye |
|——|——–|——–|—–|
| 実装言語 | Python | Python | Rust |
| 依存関係の管理 | ✅ | ✅ | ✅ |
| ビルドツール | ✅ (`poetry build`) | ❌ | ✅ (`rye build`) |
| ライブラリのアップデート | ✅ (`poetry update`) | ✅ (`pipenv update`) | ✅ (`rye sync –update-all`) |
| フォーマッタ | ❌ (外部ツール統合可) | ❌ (外部ツール統合可) | ✅ (ruffでの`rye
[Python] 関数定義の基本と使い方
## はじめに
こんにちは!
今回も、備忘録を兼ねて。Pythonでコードを書くとき、処理をまとめたり、再利用したりするために関数を使いますよね。
関数は、特定の処理に名前を付けたもので、必要な時に呼び出して使うことができます。それでは、基本から見ていきましょう。
## 関数定義の基本
Pythonで関数を定義するには、`def`キーワードを使います。基本的な構文は以下の通り。
“`python
def 関数名(引数1, 引数2, …):
“””
関数の説明(ドキュメンテーション文字列)
“””
# 関数で行う処理return 戻り値
“`* **関数名:** 関数に付ける名前。分かりやすい名前を付けましょう。
* **引数:** 関数に渡す値。複数の引数を指定する場合はカンマで区切ります。
* **ドキュメンテーション文字列:** 関数の説明を記述します。省略可能です。
* **処理:** 関数が行う処理を記述します。インデントを付けて記述します。
* **戻り値:** 関数の実行結果として返す値。`return`文で指定します
ComfyUIにおいて.jpgや.webpで画像を保存する方法(メタデータの扱いも含む)
この記事ではComfyUIで.pngの代わりに.jpgや.webpで保存する方法と、その中のワークフローを含んだメタデータの処理や移動について説明します。
尚、ここではComfyUIの基本について説明しません。既にComfyUIとComfyUI Managerをインストールしたという前提で進みます。
又、この前の記事で紹介した日本語化や日本語プロンプトを入力する方法は今回でも使うのでまずこのその記事もおすすめです。
https://qiita.com/phyblas/items/0c69ac370daa0aa01d15
# はじめに
ComfyUIはデフォルトでは.pngしか保存できないのですがね.pngファイルサイズが大きくてあまり不便に感じますね。そこで.jpgや.webpなどで保存できたらいいと思う人も少なくないでしょう。
ただ、ComfyUIから出力した.pngファイルは生成の時に使われたワークフローの情報を含んだメタデータが埋め込まれています。だからその画像をComfyUI画面にドラッグして入れたらワークフローのロードになって生成過程を再現できるから便利です。
Pythonで行う正規QQプロット
正規QQプロット(Normal Quantile-Quantile Plot)は、観測データが正規分布に従っているかを調査する方法です。
下記に正規QQプロットについて説明します。### 正規QQプロットの数式
1. **観測データの分位数(Sample Quantiles)**:
観測データの分位数を小さい順に並べます。
並べた観測値を下記にようにします。
$$ Q_{\text{observed}} = \{ q_{(1)},q_{(2)}, \ldots, q_{(n)} \} $$ ここで、$q_{(k)}$ は観測データの中で $k$ 番目に小さい値です。 $n$でデータ数です。
2. **理論的な分布の分位数(Theoretical Quantiles)**:
各データの分位点(累積確率)を算出します。
$p_{(k)} = \frac{k}{n+1}$を用いて、それぞれの分位点を算出します。
正規分布の確率密度関数の逆関数$F^{-1}(x)$を用いて期待値を算出します。 $$Q_{\text{theoretical}} = \{ F
[Python] 変数とデータ型について
## はじめに
こんにちは!
今回も、備忘録を兼ねて。Pythonでプログラミングをする上で、変数やデータ型は、とても大事ですね。
変数はデータを入れる箱のようなもので、データ型はその箱に入るデータの種類を表します。今回はPythonの変数とデータ型について、解説していきます。
## 変数とは?
変数とは、データを格納するための名前付きのメモリ領域です。
「**変数名 = 値**」のように書くことで、値を変数に代入することができます。“`python
# 変数の定義と代入
name = “やました”
age = 20
height = 170.5# 変数の値を表示
print(name) # 出力結果: やました
print(age) # 出力結果: 20
print(height) # 出力結果: 170.5
“`## データ型の種類
Pythonには、様々なデータ型が存在します。
代表的なデータ型は以下の通りです。| データ型 | 説明
VSCodeのPythonデバッガを動かす
プログラミングをしている時には不可欠なデバッギングですが、VSCodeのデバッガを使うことで効率的にデバッグを行うことができます。
いつもprintデバッグをしている人も、VSCodeのデバッガを使うことでデバッグの効率が上がるかもしれません。
(かく言う私もGoのprintで様々なデバッグをしてきたので自分に向けて書いた記事でもある)
次からはPythonを使ったデバッグの方法を書いていきます。
## 準備
extensionでPython Debugger、もしくはPythonをインストールします。
.vscode/launch.jsonに以下の記述をする。
(デフォルトの設定でこうなります)
“`json:.vscode/launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https
[Python] リスト、タプル、辞書の違いまとめ
# はじめに
こんにちは!
Pythonでデータを扱う際、よく忘れるので、自分用にまとめです。
今回は、リスト、タプル、辞書の違いについてまとめます。# リスト、タプル、辞書の違い
ざっくりと書くと、以下の通り。| 特徴 | リスト | タプル | 辞書 |
|———-|—————————————|—————————————|———————————————————-|
| データ構造 | 順序付けられたデータの集まり | 順序付けられたデータの集まり | キーと値のペア
OpenCV を使ってお絵かきアプリを作る方法(改良版)
# 0.最初に
「opencv お絵描き」でggって一番上に出てくる記事のものを改良したので紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3719521/321a3703-c40c-b8af-e838-eaee8c69c9c5.png)参考記事:
https://qiita.com/igor-bond16/items/ef26167a1139a34e24af
# 1.紹介
参考にした @igor-bond16 さんのはこんな感じ。
マウスを速く動かしたときに連続せず点々になっているのが気になりますね。次に改良したのがこんな感じ。
【AWS】EC2に新しいVersionのPythonをインストールEC2で下記を実行する。
“`
sudo yum remove -y openssl-devel
sudo yum install -y openssl11 openssl11-devel
wget -c https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tar.xz
tar -Jxvf Python-3.10.14.tar.xz
cd Python-3.10.14/
sudo yum install gcc
./configure –enable-optimizations
make
sudo make install
“`
【Python】座標を取得する方法
●座標認識のコード
import pyautogui as gui
import sysprint(‘中断するにはCrt+Cを入力してください。’)
try:
while True:
x=input(“取得したい箇所にカーソルを当てEnterキー押してください\n”)
print(gui.position())except KeyboardInterrupt:
print(‘\n終了’)
sys.exit()●必要な環境
pyautoguiのインストールpip install pyautogui
【Python】プロパティの便利な使い方5選
# プロパティとは
Pythonには「プロパティ(property)」という、クラスの属性(フィールド)のアクセス方法を
カスタマイズするための仕組みです。プロパティを使うことで、クラスの内部の実装を隠蔽し、属性へのアクセスや変更を制御できます。
つまり、クラスの変数について考えなくても属性の制御ができるようになるのです。実際に見てみたほうが分かりやすいと思います。
“`py
class Person:
def __init__(self, name):
# この属性は「プライベート」にして、直接アクセスしないようにします
# 変数名の最初に「_」をつけることでプライベートにしています
self._name = name@property
def name(self):
return self._name@name.setter
def name(self, value):
if not value:
raise Va
【Python】Flake8について調べてみた
## はじめに
pythonのツール「Flake8」について特徴や機能などの基本を理解したいと思い、「Flake8」について調べてみました。
**開発環境**
・WSL2/Ubuntu環境
・Python: 3.10.12## Flake8とは
以下は「Flake8」のGithubのREADMEより引用
>Flake8 is a wrapper around these tools:
>
>・PyFlakes
>・pycodestyle
>・Ned Batchelder’s McCabe scriptFlake8は「PyFlakes」と「pycodestyle」と「Ned Batchelder’s McCabe script」の3つのツールのラッパーです。
### PyFlakes
Pythonプログラムのエラーをチェックするプログラムです。
PyFlakesは設計方針として、Pylintよりも高速に動作することを挙げています。
PyFlakesを実際に以下のtkinterを使用したサンプルプログラムに適用してみました。
その結果もあわせて記載します。“`Pyf
Docker内でFastAPIを使うときのログ出力
# 概要
FastAPIでアプリケーションを作成しDockerで動かす際に、標準出力へログを出す方法を記載します。
`logging`モジュールか`print()`で行います。
# 環境
Python:3.12
FastAPI:0.111.0
Docker:26.1.1, build 4cf5afa# print()で行う場合
簡易的なログ出力であれば、`print()`で可能です。
“`python
from fastapi import FastAPI
from pydantic import BaseModelclass Item(BaseModel):
name: strapp = FastAPI()
@app.post(“/items/”)
async def create_item(item: Item):
print(f”print: {item.name}”)
return {“return”: f”hello {item.name}”}
“`“`bash:出力結果
print: hogehoge
“`
Python_Googleアラート_240706
### 好物はとろろ様のPython 3 エンジニア認定実践試験合格体験記を公開しました – CNET Japan
CNET Japanは、好物はとろろさんのPython 3 エンジニア認定実践試験合格体験記を公開しました。とろろさんは、2年前からPythonを使い始め、その使いやすさに魅力を感じたそうです。合格体験記では、Pythonを始めたきっかけや試験対策について詳しく語られています。#### https://japan.cnet.com/release/30929344/?ref=rss
—
### 人事部向けコラム「データ分析試験の受験者の声」 – CNET Japan
CNET Japanで、Pythonエンジニア育成推進協会の吉政忠志氏が人事部向けコラムを連載中。データ分析試験の受験者数は5万人を超え、DX推進に伴い企業での採用が増加。データ分析試験の学習は、全社・部門全体の理解促進に役立ち、DXプロジェクトの効率化に貢献。#### https://japan.cnet.com/release/30988974/
—
### Python対応を強化した