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

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

【Flet】ヘッダ表示固定の簡易DataTableを作ってみました

# 概要
FletのDataTableですが、表をスクロールするとヘッダもスクロールされて見えなくなってしまいます。
これを改善するために、ヘッダ表示固定の簡易DataTableを作ってみました。

# 解決したいこと
Flet標準のDataTableは、ヘッダごとスクロールされます。
ヘッダが見えなくなっちゃうので、ヘッダが固定されたデータ表を作りたい。

↓Flet標準のDataTable
![datatable.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601563/54cc9143-4e66-f1ff-2c93-fcc9c7a78280.gif)

# ヘッダ固定のデータ表を作ってみました
イメージ図は以下になります。

FixedHeaderDataTableクラスは、Columnコントロールを継承しています。
その中でヘッダ部分とスクロール可能なデータ部を配置しています。
そのFixedHeaderDataTableクラスをPageへ配置しています。

![名称未設定ファイル.draw

元記事を表示

【Flet】DataTableでスクロールしたい

# 概要
Fletを試していてちょっと躓いたところがあったので備忘録として記載します。
データ表を表現しようと、FletのコントロールであるDataTableを使おうとしたのですが長い表になるとスクロールできませんでした。
スクロールできるようにする方法を簡単な例で説明いたします。

# 結論
スクロール可能なコントロールの中に配置しないといけないそうです。
Fletではスクロール可能なコントロールが決まっているようです。

https://flet.dev/blog/scrolling-controls-and-theming/

# 簡単な例で説明
Pythonバージョン:3.10.10
Fletバージョン:0.22.1

### DataTableをそのまま配置するとスクロールできません
スクロールバーが表示されず、全データ見ることができないです。
![スクリーンショット 2024-05-31 162856.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601563/7e771b87-bb2d-f

元記事を表示

TensorFlowを利用するWSGIサーバの構築に向けたPython3環境の構築

# 背景

ChatGPTには、画像アップロード機能が加わり、画像解析を行う機能が追加されたことを知ることになった。

画像ストアサービス【PhotoGalleryosm.yokohama)】を運営する身としては、垂涎ものである機能と思い、早速WebAPI経由で接続をすることを試したくなった。

そんな中、ChatGPTの中で、文章末尾にあるソースの提示を受ける。ありがたや、ありがたや。

## 前提
OS: Amazon Linux 2
Python: version python-3.9.18
Apache Web Server version: Apache/2.4.59

#### TensorFlowは、以下のスレッドで問題に上がっているようなことがあるため、Pythonバージョンを指定する必要がある
https://github.com/pybind/pybind11/is

元記事を表示

Macのデスクトップに保存したQRコードを、カメラ機能を使わずにPython3で直接読み取る

# 環境
>macOS ventura 13.2
Python 3.10.4
selenium 4.19.0(pip)
pyzbar 0.1.9(pip)
zbar 0.23.93(HomeBrew)

# これを作った理由
>iPhonで読むには文字が小さすぎるので、パソコンで読みたい(もう70才なので小さい文字はどうも・・・)。
でもQRコードを読み込むのはどうすればいい?
iphonでqrコードを読み取ってメールで送る?
iPhonみたいにカメラで写真も撮れないし・・・。
それでは、Macのディレクトリやデスクトップに保存したQRコードを、カメラ機能を使わずにPython3で直接読み取ることは出来ない?
ということでChat-GPTに相談したところ、
Pillowライブラリを使用して画像を読み込み、qrcodeライブラリを使用してQRコードをデコードする方法がある
という事なので相談しながら作ってみました。

# 必要なライブラリの確認
>1, Homebrewに”zbar”が入ってますか?
 入ってなければ:brew install zbar
2

元記事を表示

flet ページ切り替え (decorator)

最初は [flet-easy](https://github.com/Daxexs/flet-easy)を使おうとしたけど
`page.theme_mode` がページ上で変更できなかったり (見つけてないだけかも)
`fs.Datasy` が使いにくかったので、fletだけで作ろうと思い
flet-easyの構文が好きだったので作りました

“`py: easy_app.py
import flet as ft

class EasyApp():
def __init__(self, route_init=”/”):
self.route_init = route_init
self.route_list = []
self.ft_page = None
self._custom_wrapper_befor = None
self._custom_wrapper_after = None

def custom_wrapper_befor(self, func):
self._custom_wrapper_befor =

元記事を表示

pythonの仮想環境のメモ

## はじめに
2024年7月号のSoftware Designのセキュリティの対策と強化のコーナーの第4章の「CTFに挑戦」にて、pythonを使用し、SQLインジェクション攻撃を利用して、データベース内の特定のテーブルの情報を取得する記載がありましたので、その環境作りのメモとなります。

## 内容
Pythonでは、仮想環境ディレクトリを作成して、その環境内でのみパッケージが適用されます。この仕組みを利用することで、システム全体に影響を与えずにプロジェクトごとに適切な環境を構築することができます。
本件はmacを使用しています。

## 作成
### 仮想環境の仕組み

1. **仮想環境ディレクトリの作成**: `python3 -m venv myenv` コマンドを実行すると、`myenv` という名前のディレクトリが作成されます。このディレクトリには、独自のPython実行環境とその環境に特化したライブラリの管理ツール(例えば、`pip`)が含まれます。

2. **仮想環境のアクティベート**: `source myenv/bin/activate` を実行すると、その

元記事を表示

pythonのスタイルガイド

変数定義(snake_case)

• 変数の後には1つのスペースを入れる。
• 行の最後にスペースを入れない。
• 宣言後変更しない変数は大文字のスネークケース(例:円周率など PI)を使用する。

関数(snake_case)

• 引数の「=」にはスペースを入れない。
• 引数が多い場合は、引数の先頭に合わせて改行する。
• 関数間は2行空ける。

演算子

• 演算子の周りには1つのスペースを入れる。ただし、演算子の優先順位がある場合はスペースを入れない。

コンマ

• コンマの後にはスペースを入れる。ただし、その後に閉じカッコが来る場合はスペースを入れない。

コンテナ

• 要素を並べる時にコンマで終えることが可能。そうすることで簡単に行を追加でき、gitなどのバージョン管理で差分にならない。
• この方法を用いる場合、閉じカッコは次の行にすること。

クラス(CamelCase)

• メソッド間は1行空ける。

改行の仕方

• バックスラッシュ(\)で区切る。
• 演算子を行の先頭にして改行する。

インポート(import)

• im

元記事を表示

Pythonでマイル(mile)とキロ(km)を変換するプログラムコードを作成してみた

### 前置き
日本では、野球の投手の球速や野手の打球速度を測る時に、キロ(km)が使用されているが、アメリカでは、マイル(mile)が使用されている。そこで、今日は、キロからマイルに変換できるプログラムコードを作成してみたかった。

### プログラムコード(マイルからキロに変換)
“` python
from tkinter import *

def miles_to_km():
miles = float(miles_input.get())
km = miles * 1.609344
kilometer_result_label.config(text=f”{km}”)

window = Tk()
window.title(“Miles to Km converter”)
window.config(padx = 20, pady = 20)

miles_input = Entry(width = 7)
miles_input.grid(column = 1, row = 0)

miles_label = Label(text = “Miles”)

元記事を表示

Pythonで摂氏(°C)と華氏(°F)を相互変換するプログラムコードを作成してみた

### 前置き
日本では、気温を測るときに、摂氏(°C)が使用されているが、アメリカでは華氏(°F)が使用されている。ほとんどの国においては、摂氏(°C)が使用されている。今日は、
摂氏(°C)から華氏(°F)に変換するプログラムコードを作成してみたかった。

### プログラムコード (気温を摂氏(°C)から華氏(°F)に変換)
“`python
import tkinter as tk
from tkinter import ttk

def celcius_to_fahrenheit():
celcius_to_fahrenheit = float(celcius_input.get())
celcius = celcius_to_fahrenheit * 9/5 + 32
celcius_result_label.config(text=f”{celcius}”)

window = tk.Tk()
window.title(“ºC to ºF converter”)
window.config(padx = 20, pady = 20)

# Get scree

元記事を表示

初心者がAIモデルで株価予測してみた

## 目次
1. はじめに
1. 本記事の概要
1. 実行環境
1. 株価予測の実装
1. おわりに

## はじめに
2024年2月より、Aidemy premiumにて「データ分析講座6ヶ月コース」を受講しました。
育休中にスキルアップをして復職後の仕事の質を高めたい、そして働き方の選択肢を増やしたいと考えたのがきっかけでした。

## 本記事の概要
* 約半年間学んだ内容のアウトプットを目的としています。今回はハードルは高く設定しすぎず、基礎を大切に、まずは完成させることを第一にしています。
* SARIMAモデルを用いた時系列分析を行い、株価予測をします。今回は資生堂の株価データのうち終値のデータを用い、以下の2パターンの分析を行います。
1. 日別データから算出した月平均データを用いて構築したモデルからの予測
1. 週別データを用いて構築したモデルからの予測

## 実行環境
* Python 3.10.12
* Google Colaboratory

## 株価予測の実装
### その1. 日別データを月平均にならして利用
Yahoo!ファイナンスから取得

元記事を表示

【Python】テスト・モックのやり方とその仕組み

# 概要

Pythonでテストといえば、unittestやpytestが有名ですが、unittestやpytestを使わないやり方、unittestとpytestの違いなどを解説していきたいと思います。まず、テストするにあたり、モックのための前提知識として、再宣言について解説し、次に実際にテストの解説をしていきます。

この記事を読むと以下のことが理解できるようになります。

* [再宣言について](#再宣言)
* [ライブラリを用いないテストの使い方](#ライブラリを使わずにテストする)
* [なぜライブラリが必要なのか?](#モックの問題点)
* [unittestの使い方](#unittest)
* [pytestの使い方](#pytest)

初心者の方やPythonのテストの仕組みについて知りたい方におすすめです。

# 再宣言

PythonではGoやJavaなどの言語とは異なり、再宣言が可能です。

“`python
a = 1
a = 1 # エラーにならない
“`

他の言語では以下のようにコンパイルエラーになります。(以下はGoの例)

“`go:goの場合

元記事を表示

10年稼働してきたGoogle App EngineをPython2からPython3へマイグレーションしました

# 概要

こんにちは、SNSピリカ開発チームの冨田です。

今年の1月にAPIサーバをPython3に移行するプロジェクトを完遂しました。

本プロジェクトは、SNSピリカ開発チームのメンバーはもちろん、それ以外のメンバー、業務委託で一時的に関わってくださった方々、テストで関わってくださった方々、すでに退社された方々など、たくさんの方々の知恵が詰まっています。

# 背景

SNSピリカ[^1]は、2011年から稼働しているサービスです。従来APIサーバはAppEngine/Python2.7上で稼働していました。

Python2.7は2020年初にPython公式のサポートが終了しました。ピリカでも少しずつマイグレーションを進めていましたが、ビジネス上の理由から他の開発に時間と人員を割かなくてはならず、マイグレーションはあまり進められずにいました。
そんな中、[2024年1月末のサポートの終了](https://cloud.google.com/appengine/docs/standard/lifecycle/support-schedule?hl=ja#python)がアナウ

元記事を表示

[memo]Python logging

python logging機能を自分用にまとめました
きまぐれに追記・修正するかもしれません

https://docs.python.org/ja/3/howto/logging.html

# Loggerの部品

loggerとしては以下のオブジェクトがある

– logger:アプリケーションコードが直接使うインターフェースを公開します
– handler:(ロガーによって生成された) ログ記録を適切な送信先に送ります
– filterどのログ記録を出力するかを決定する、きめ細かい機能を提供します
– formatter:ログ記録が最終的に出力されるレイアウトを指定します

> ログイベント情報は LogRecord インスタンスの形で、 logger, handler, filter, formatter の間でやりとりされます。

# LoggerとHandlerのフローチャート

![](https://docs.python.org/ja/3/_images/logging_flow.png)

# Loggerオブジェクト

> Logger オブジェクトの仕

元記事を表示

Django で GraphQL 実装してみた リファクタ編

## Django で GraphQL 実装してみた
– [環境構築編](https://qiita.com/dbxkazuxdb/items/77a9c6d809a1c706e2db)
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– [Mutation編](https://qiita.com/dbxkazuxdb/items/0d8e79cdba10349b47ec)
– リファクタ編 ← この記事

### ディレクトリ
shemasフォルダを作成
その中に、NodeやQueryなどを記載していく

“`bash
├── app
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── fixtures
│   │   └── ingredients.json
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── 0002_category_is_active

元記事を表示

Django で GraphQL 実装してみた Mutation編

## Django で GraphQL 実装してみた
– [環境構築編](https://qiita.com/dbxkazuxdb/items/77a9c6d809a1c706e2db)
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– Mutation編 ← この記事
– [リファクタ編](https://qiita.com/dbxkazuxdb/items/b356912e1968fa8d02bb)

## 実装

### createメソッド追加
app/schema.py
“`diff_python
class IngredientNode(DjangoObjectType):
class Meta:
model = Ingredient
interfaces = (relay.Node,)
filter_fields = {
“name”: [“exact”, “icontains”, “istarts

元記事を表示

Django で GraphQL 実装してみた 環境構築編

## Django で GraphQL 環境構築(Docker)
– 環境構築編 ← この記事
– [Query編](https://qiita.com/dbxkazuxdb/items/b1bdc9eac9856deb493c)
– [Mutation編](https://qiita.com/dbxkazuxdb/items/0d8e79cdba10349b47ec)
– [リファクタ編]()

### 環境

macOS Sonoma 14.5
docker 26.1.3

python 3.11
Django 4.2.9
graphene-django 3.2.2

#### ディレクトリ

project
├── apps
│   └── backend
│      ├── app # django app
│      ├── config # django project
│      └── manage.py
├── compose.yaml
└── docker
   ├── backend
   │   ├── ng

元記事を表示

Pythonで作ったExeファイルの起動時に、起動中、と表示したい

## 結論
Windows環境であれば、pyinstallerのsplashを利用することで実現できます。

(この記事を書いている2024/06/24時点で)
※公式にexperimentalの記載がありますので、試験的な機能であることをご承知おきください。
※macOSは非対応とのことです。

## 背景
Pythonで作ったExeファイルの起動時に、起動中と表示したい、と思ったものの、なかなか見つけることができなかったので、記事にしてみました。

### もう少し細かい背景
業務上、Pythonで作ったスクリプトをPyinstallerを利用してexe化して配布することが頻繁にあります。
作成したexeの起動に数秒を要し、ユーザー側で起動しているかわかりにくい状況に陥ることがありました。

## 環境
Windows 10
Python 3.11
Pyinstaller 6.4.0

## サンプルコード
以下のように、exeの時にimport pyi_splashで読み込むように指定します。
そして、起動後にpyi_splash.close()で閉じます。

```
# sam

元記事を表示

Pythonで軽減税率のプログラムを作成してみた:8%と10%の消費税を計算

### 前置き
Qiita Engineer Festa 2024に参加し、20個目の記事として、2019年10月1日に消費税が8%から10%に増加した際、導入された軽減税率をわかりやすくするプログラムをPythonで
作成しました。この記事では、ユーザが商品の値段を入力し、8%および10%の消費税を含んだ値段とお釣りを表示するプログラムを紹介します。

### 軽減税率とは
消費税増税に伴って10%となった商品の一部を消費税8%で据え置く制度です。

### 作成したプログラムコード
``` python
def calculate_total_price(price):
tax_rate_8 = 0.08 # 8%の税率
tax_rate_10 = 0.10 # 10%の税率

total_price_8 = price * (1 + tax_rate_8)
total_price_10 = price * (1 + tax_rate_10)

return total_price_8, total_price_10

def main():
# 商品の

元記事を表示

python組み込み関数解説①

## 本記事で解説する関数たち
- abs
- aiter
- all
- anext
- any
- ascii
- bin
- bool
- breakpoint
- bytearray
- bytes

## 注意
Python3.12.4 現在の内容です
また、
```python
print("Hello World")
> Hello World
```
と書いた時、上の部分が実行するコード、その下の`>`に続く部分はshellへの出力とする

## 関数解説
### abs
入力値の絶対値を返す
数値系の方でなくてはならない
abs関数の実行時に、`object.__abs__(self)`が呼び出される
```python
print(abs(1-44))
> 43

print(abs(43))
> 43

print(abs(-1*1/3))
> 0.3333333333333333

# 複素数の場合は...
print(abs(3 + 4j))
> 5.0
```

### aiter
`async - awairt` に関する関数のため、まずは非同期処理につい

元記事を表示

Python3: ファイルの行数を数える

## プログラム

```py:line_count.py
#! /usr/bin/python
#
# text/line_count.py
#
# Jun/24/2024
#
# --------------------------------------------------------------------
import sys
import subprocess
#
# --------------------------------------------------------------------
def count_lines(filename):
try:
result = subprocess.run(['wc', '-l', filename], capture_output=True, text=True)
output = result.stdout.strip()
line_count = int(output.split()[0])
return line_count

元記事を表示

OTHERカテゴリの最新記事