Python3関連のことを調べてみた

Python3関連のことを調べてみた
目次

【AWS CloudWatch Logs】EC2からPythonで実務想定のテストログを生成/送信

## はじめに
個人学習の目的を含めているため、不要な手順や無駄な工程があるかもしれません。
Pythonの実行環境としてEC2を利用していますが、お好きな環境で利用可能です。

## 本記事の目的
Pythonを使ってランダムなIPアドレスを含むログメッセージを生成し、
それをAWSのCloudWatch Logsに送信する。
(PythonとAWS CLIの個人学習)

↓実際に生成したログ↓
メッセージにランダムなIP`例)IP=186.139.154.218`とランダムなstatus含む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879433/a7ed5eaa-62e7-7cc2-5e76-4ddc2387b9e3.png)

“`text:CloudWatchから確認したログのサンプル(3件)
2024-11-16T12:17:23.252+09:00
Sample log entry at 2024-11-16T03:17:23.252405: status=INF

元記事を表示

【備忘録】Excelで管理してるテーブル定義からBigQuery用のDDLを作成したい

## はじめに
初投稿なので簡単なものだけどただ欲しかったので作ってみたものの備忘録

あんまり色んなとこで仕事したことないから一般的な管理はわからないが
テーブル定義の仕様書をExcelで管理しているところも多いはず:expressionless:

正直生成AIに丸投げしてDDL吐かせた方が早い気もするが仕様書をそもそも外部に読み込ますの自体が許されないことも多いのでこの記事では以下を実現します:
1. Excelセルからテーブル名を取得
2. 各シートのカラム情報をもとにDDLを生成

## 使用するライブラリ
以下のライブラリを使用します:
– pandas:Excelファイルの読み取り
– openpyxl:Excelファイルの操作(pandasに依存)

インストールされていない場合、以下のコマンドでインストールしてください。

“`bash
pip install pandas openpyxl
“`

## Excelデータの例
サンプルのExcelファイルは以下のような構造です。(1.1のシートもおんなじ構造)

Python 3 エンジニア認定実践試験対策 (6) – Black

Pythonを数年使ってきて、改めて知識の整理と最新仕様のキャッチアップのために Python 3 エンジニア認定実践試験を受験しようと思い、私的に作成した資料から簡易版を作成しました。
最後に練習問題を設けましたので、解説を読んだら記憶定着のために練習問題へチャレンジしてください。最後に答えを掲載しています。

### Blackとは

– **目的**: Blackはフォーマッターです。PEP8コーディング規約に従ってコードを自動整形します。PEP8で決められていない部分についても、Black独自の仕様で強制フォーマットすることで、コードの可読性を向上させ、開発者をロジックに集中させることを目指しています。

– **利点**: コードフォーマットに関する議論を減らし、チーム全体で一貫したスタイルを保つことができます。手動でのフォーマット設定変更がほぼできないため、チームメンバー間でのスタイルの不一致を防ぎます。

### Blackのインストール
“`bash
$ pip install black
“`

### フォーマットの実行
特定のPythonファイルを整形するに

元記事を表示

__pycache__が生成されるディレクトリが指定できるようになっていた件

Pythonの`__pycache__`ディレクトリは、Pythonファイルをコンパイルしたバイトコード(`.pyc`ファイル)をキャッシュするために自動生成されます。このディレクトリの場所を明示的に指定する方法は、Python標準には直接は存在しませんが、いくつかの方法で`__pycache__`の管理やディレクトリの扱いを調整することはできます。

### 1. `PYTHONPYCACHEPREFIX` 環境変数を使う
Python 3.8以降では、`PYTHONPYCACHEPREFIX`環境変数を使って`__pycache__`ディレクトリの保存場所を変更できます。この変数にカスタムのディレクトリパスを指定すると、すべてのバイトコードキャッシュがその場所に保存されます。

#### 使い方
以下の例では、キャッシュを`/path/to/custom/cache`に保存します。

**Linux/macOS**
“`bash
export PYTHONPYCACHEPREFIX=/path/to/custom/cache
python your_script.py
“`

元記事を表示

Python 3 エンジニア認定実践試験対策 (5) – Flake8

### Flake8とは
– **目的**: Flake8は、Pythonコードの静的解析を行うコマンドラインツールで、PEP8スタイルガイドに基づいてコードの品質をチェックします。文法エラーや潜在的なバグ、コードの複雑さを検出します。

– **構成**: Flake8は以下の3つのツールで構成されています。
– **pycodestyle**: PEP8に準拠しているかをチェックします。
– **Pyflakes**: 潜在的なバグを検出します(フレーク=小さな塊=不具合箇所の意)。
– **McCabe**: コードの複雑さを測定します
– 複雑度を表すマッケイブ指標が由来。
– デフォルトでは無効化されているため、複雑度を指定するオプションを指定すると有効化されます。

### Flake8のインストール
“`bash
$ pip install flake8
“`

### 静的コードチェックの実行
“`bash
$ flake8 <チェック対象ファイル名>
“`

### エラーコードの確認
Flake8が出力するエラーコードの詳細は

元記事を表示

Python3: paizaラーニング問題集「マップの判定・縦横」やってみた

なんとなく解き方あったなと思ったのでやってみました。

https://paiza.jp/works/mondai/a_rank_level_up_problems/a_rank_snake_map_boss

マップのある場所の四方を調べる的なことなので、マップの廻りを何かで取り囲んでやると場合分けが少なくなる的なことです。

“`py:
H, W = map(int, input().split())

BORDERED = tuple(
(True,) * (W + 2)
if j == 0
or j == H + 1
else
(True
, *(i == “#” for i in input())
, True
)
for j in range(H + 2)
)

every_side_surrounded = (
(j – 1, i – 1)
for j in range(1, H + 1)
for i in range(1, W

元記事を表示

Pythonで実行中の関数と変数の名前を簡単に取得する

# 環境
Python3.6以降

# 取得する方法

例外処理などを書くときにで関数や変数を決め打ちして書き出すこともできるが、関数や変数の名前に変更があるとめんどい。

“`Python3
def hoge(fuga):

raise ValueError(“hoge関数のfuga変数の値がおかしい。”)
“`

なので、vscodeなどのエディターを使い、関数や変数の名前を一括して変更できる機能に期待して次のように書く。
何もインポートする必要はない。

“`Python3
def hoge(fuga):

f_name = hoge.__name__
v_name = f”{fuga=}”[:f”{fuga=}”.find(“=”)]

raise ValueError(f”{f_name}関数の{v_name}変数の値がおかしい。”)
“`

関数名のみ`inspect`をインポートすることで次のように書ける。この場合、関数名を書き換える際にエディターの名称を変更する機能を使う必要もなくなる。

“`Python3
import in

元記事を表示

Python 3 エンジニア認定実践試験対策 (4) – PEP8

Pythonを数年使ってきて、改めて知識の整理と最新仕様のキャッチアップのために Python 3 エンジニア認定実践試験を受験しようと思い、私的に作成した資料から簡易版を作成しました。
最後に練習問題を設けましたので、解説を読んだら記憶定着のために練習問題へチャレンジしてください。最後に答えを掲載しています。

### PEP8とは
– **目的**: Pythonコードを書く時の標準スタイルガイドであり、コードの可読性を向上させるためのルール。

– **利点**: 一貫したスタイルでコードを書くことで、チーム内での協力がスムーズになり、保守性が向上します。

### PEP8の主なルール

1. **コードのレイアウト**
– **インデント**: 半角スペース4つを使用します。
– **折り返しインデント**: 引数が複数行にわたる場合、最初の行のカッコに合わせてインデントします。
“`python
def sample_function(arg_one, arg_two,
arg_three,

元記事を表示

VSCodeでWindowsからリモートのUbuntu24.04上にあるPythonコードをデバッグする

Visual Studio Codeは予約語の補間をはじめとする様々な機能を備えた統合開発環境です。Pythonを勉強しようと思った際に、手元にあるWindowsからリモートのUbuntu24.04上のPythonコードをデバッグできたら…と思い立ち、試してみました。

![2024-11-11 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3919880/3ebeda14-cfbe-8870-f92c-1831065f1555.png)

### 参考にしたサイト

https://net-newbie.com/2020/04/11/vscode-python-remote-debug/

## Windows上での準備

### Visual Studio Codeのインストール

– Visual Studio Codeをインストールします
– Windows上のVisual Studio Codeに必要なパッケージをインストールします
– Japanese Language Pack

元記事を表示

Djangoのアプリを作成し、ローカル環境で動作させるまで

# 目的
– Django で簡単なアプリを作成
– 作成したアプリをローカル環境で動作

# 前提
– OS
– macOS Sonoma 14.6
– 各バージョン
– python 3.12
– Django 5.1.3

# 準備
### プロジェクトを作成
“`bash
django-admin startproject {プロジェクト名}
“`
“`bash
# 例)「sampleProject」というプロジェクトを作成
django-admin startproject sampleProject
“`

### アプリを作成
“`bash
cd {プロジェクトのディレクトリ}
python manage.py startapp {アプリ名}
“`
“`bash
# 例)「sampleProject」のプロジェクトに「sampleApp」のアプリを作成
cd sampleProject
python manage.py startapp sampleApp
“`

### ローカルサーバー起動
“`bash
python mana

元記事を表示

OpenCVを用いたコーナー検出のやり方

コーナー検出は、画像内の物体の形状やエッジの特徴を捉えるのに役立ちます。今回は、代表的なコーナー検出アルゴリズムであるHarrisコーナー検出とShi-Tomasiコーナー検出を使用します。

## 必要なライブラリのインポート
OpenCVとNumPyをインポートします。OpenCVは画像処理のため、NumPyは配列操作に使用します。
“`python
import cv2
import numpy as np
“`

## 1. 画像の読み込みとグレースケール変換
まず、解析対象の画像を読み込み、コーナー検出を行いやすくするためにグレースケールに変換します。
“`python
# 入力画像の読み込み
image = cv2.imread(“input.jpg”)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
“`
ここでinput.jpgは解析対象の画像ファイルです。

## 2. Harrisコーナー検出
Harrisコーナー検出は、エッジや角のような急激な変化のある領域を検出するアルゴリズムです。次のコードで、OpenCV

元記事を表示

OpenCVでの楕円フィッティングのやり方

画像処理において、物体の輪郭を検出し、その輪郭に基づいて形状をフィッティングするのはよく行われる手法です。特に楕円フィッティングは、物体の回転やスケール変化に対して比較的ロバストであり、特徴的な形状を表現するために便利です。本記事では、PythonとOpenCVを使用して楕円フィッティングを行う方法について詳しく説明します。

## 1. 必要なライブラリのインポート
まず、必要なライブラリをインポートします。OpenCVとNumPyを使います。OpenCVは画像処理、NumPyは配列操作に役立ちます。
“`python
import cv2
import numpy as np
“`
## 2. 画像の読み込みとグレースケール変換
次に、解析対象となる画像を読み込み、グレースケールに変換します。グレースケール化することで、画像の情報量を減らし、エッジ検出を行いやすくします。
“`python
# 入力画像の読み込み
image = cv2.imread(“input.jpg”)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
“`

元記事を表示

OpenCVを用いた色検出

## 1: 必要なライブラリをインポートする
“`
import cv2
import numpy as np
“`
## 2: 画像を読み込む
“`
# 画像を読み込む
image = cv2.imread(‘image.jpg’)
“`
## 3: 色空間を変換
HSV色空間に変換します。HSV色空間は、色調(Hue)、彩度(Saturation)、明度(Value)を使って色を表現し、特定の色範囲を選択しやすくなります。
“`
# 色空間をHSVに変換
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
“`
## 4: 色の範囲を定義
特定の色範囲をHSV値で定義します。ここでは例として、青色の範囲を定義しますが、必要に応じて調整してください。
“`
# 青色の範囲を定義(HSV空間)
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
“`
## 5: 色範囲内のマスクを作成
定義した色範囲に基づいてマスクを作成します。マスクは、

元記事を表示

PythonのPandasライブラリを使用して、Excelファイルへ

このコードは、PythonのPandasライブラリを使用して、Excelファイル内の複数のシートに対してデータ処理を行う部分です。各シートからデータを抽出し、解析し、結果をまとめるという一連の流れが実現されています。初心者の方でも理解できるように、コードの各部分を丁寧に解説していきます。

## 目次

1. [Excelファイル内のシートごとの処理](#excelファイル内のシートごとの処理)
2. [シートのデータ読み込み](#シートのデータ読み込み)
3. [必要な列の存在確認](#必要な列の存在確認)
4. [差の割合の計算](#差の割合の計算)
5. [結果のDataFrame作成](#結果のdataframe作成)
6. [グラフの色の設定](#グラフの色の設定)
7. [まとめと次のステップ](#まとめと次のステップ)

## Excelファイル内のシートごとの処理

### コード例

“`python
for sheet_name in sheet_names:
“`

### 説明

– **目的**:Excelファイル内にある複数のシートを

元記事を表示

【Python】re.searchとre.findallの違いは?サンプルコードで解説

# 概要
Pythonの`re.search`と`re.findall`を使ってみたのでサンプルコードで紹介します。

# サンプルコードと解説

それぞれ以下の違いがあります。

・`re.search`:文字列全体を検索し、最初に一致した部分文字列を含むマッチオブジェクトを返す
・`re.findall`:文字列全体を検索し、一致するすべての部分文字列をリストとして返す

上記の通り、`re.search`は最初の一致を確認するために、`re.findall`は一致するすべての部分文字列を確認するために使用されます。

“`py
import re

def find_all_emails(email_pattern, text):
emails = re.findall(email_pattern, text)

print(“抽出されたメールアドレス:”)
for email in emails:
print(email)

def search_first_email(email_pattern, text):
email

元記事を表示

[python] python初心者が覚えるべき事11選

# 参考目次:airplane:
#### 目次一覧
[はじめに](#はじめに)
[自己紹介](#自己紹介)
[python基礎](#python基礎)
 - [3-1-変数とデータ型](#3-1-変数とデータ型)
 - [3-2演算子](#3-2演算子)
 - [3-3制御フロー](#3-3制御フロー)
 - [3-4関数](#3-4関数)
 - [3-5モジュール](#3-5モジュール)
 - [3-6例外処理](#3-6例外処理)
[ココでお茶休憩tea](#ココでお茶休憩tea)
 - [3-7オブジェクト指向プログラミングoop](#3-7オブジェクト指向プログラミングoop)
 - [3-8-ファイル操作](#3-8-ファイル操作)
 - [3-9リスト内包表記](#3-9リスト内包表記)
 - [3-10デコレーター](#3-10デコレーター)
 - [3-11ジェネレーター](#3-11ジェネレーター)
[その他](#その他)
[おわりに](#おわりに)

## はじめに
 この記事は*Python*を勉強しようと思っている人向けの記事となっております。
 結構寒くなっ

元記事を表示

【Python】文字をペイント系ソフトのペンツールで描画する

# なぜ作ろうと思ったか
とあるサイトで、画面にマウスや指、アップルペンシルなどを使って描画したものをサーバーに送信できる機能がありました。自分はwindowsを使っているのでマウスでしか描画できません。そうした際に文字をきれいに描画することができないという問題が発生します。そういった問題を解決するため、このツールを作成することとしました。

# 制作過程とコード配布
pythonにあるpyautoguiとpillowというライブラリを組み合わせて作ることとしました。

pypiを使ったライブラリのインストールコマンド
“`
pip install pyautogui pillow
“`

ChatGPTが作ったコードを改良しただけではありますが、完成形を配布します!
*テキストとttfフォントへのパスは自分で指定してください。
(動作確認済みの環境:python 3.10)
“`py
import pyautogui
import time
from PIL import Image, ImageDraw, ImageFont

# 手書き風に描くテキスト
text = “描画

元記事を表示

Python 不動産ライブラリAPIを使ってみる デプロイ編

前回のお話 ⇒ コーディング編

streamlitで作ったアプリをデプロイする方法について書く。
デプロイとはサーバー上に展開し、誰でもアクセスできるようにすることである。

目次:
1.デプロイ方法は、1つだけではない
2.Streamlit Sharingとは
3.Githubでの作業
4.ディレクトリ構造と秘匿情報(APIキー等)の取扱い
5.Streamlit Community Cloudでの作業(デプロイ)
6.まとめ

1.デプロイ方法は、1つだけではない

Streamlitで作成したアプリをデプロイする方法はいくつかあるらしい。

① Streamlit Sharingでデプロイ
② Dockerを使ったデプロイ(AWS, GCP, Azureなどのクラウドサービス上でホスト可能)
③ Herokuでデプロイ
④ 自前サーバーや**VPS(仮想専用サーバー)**でのデプロイ

今回、最も簡単に

元記事を表示

Python3: paizaラーニング問題集「部外者をはじけ」を解いてみた

おもしろそうだったのでやってみました。

https://paiza.jp/works/mondai/b_rank_skillcheck_archive/finding_putliers_99

解答例のように個別に距離を測ってもいいんだけど、距離2の平行線の外側って考えると、計算がちょっと軽くならないかな、と思ってやってみる。

“`py:
from itertools import combinations
from math import sqrt
from dataclasses import dataclass

@dataclass
class NumberedPoint:
n: int
x: float
y: float

DISTANCE = 2.0

def outsiders(points):
min_outs = [*points]

for p0, p1 in combinations(points, 2):
tenp_outs = []

if

元記事を表示

【備忘】よくつかうコードスニペット: Python標準ライブラリ系

## 目的
鳥頭のため、ちょっと書いてないだけで基礎的な記法も忘れる始末。

## 一覧

### json

#### JSONデータのシリアライズ(PythonオブジェクトをJSON文字列に変換)

“`
import json

data = {
“name”: “Example Item”,
“price”: 19.99,
“in_stock”: True
}

# JSON文字列に変換
json_data = json.dumps(data)
print(json_data) # {“name”: “Example Item”, “price”: 19.99, “in_stock”: true}

“`

#### JSONデータのデシリアライズ(JSON文字列をPythonオブジェクトに変換)

“`
# JSON文字列
json_data = ‘{“name”: “Example Item”, “price”: 19.99, “in_stock”: true}’

# Pythonオブジェクトに変換
data = json.loads(

元記事を表示

OTHERカテゴリの最新記事