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

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

GAE + Python(Flask)でHello Worldまの3ステップ

# GAE + Python(Flask)でHello Worldまの3ステップ
前提条件
・GAEをホストするプロジェクトが存在する
・請求先アカウント作成済み
・Cloud SDKインストール済み

## ①AppEngineアプリを初期化
### GCPコンソールで操作する場合
・リソースリストの中からAppEngineを選択する。
・アプリケーションを作成ボタンを押す。
・画面に従ってリージョンを選択する

### コマンドラインで操作する場合
・gcloud app create –project=[YOUR_PROJECT_ID]
を実行
・表示された指示に従ってリージョンを選択する

## ②ローカル環境でアプリを作成する
今回はPythonのフレームワークFlaskを使います。
以下のような構成で作成
root
│ .gcloudignore
│ app.yaml
│ main.py
│ requirements.txt

└─templates
| index.html

“`app.yaml
#GAEの設定ファイル。
#インスタン

元記事を表示

Numbaは爆速だが、Dict(辞書型)は遅い

Numbaの高速ぶりには感謝しております。

下記サイトでもNumba使われてますが、Numbaが断然速い。本PCでもJavaScriptコードでは約3秒。Numbaは掲載記事通りのパラなら3.5秒程度。fastmathやparallelパラ付けで0.7秒位。断然速い。
https://itnext.io/compare-c-js-python-python-numba-php7-php8-and-golang-in-prime-number-calculation-55e82b6f82a9

PythonのコードをよりNumbaへ置き換えたいのですがDictがあると高速化はできていません。
わかる方がいらしたら教えて頂けると幸いです。

### キーは数字/Numba有り
– NoPythonモードでビルドできます

“`python
import numpy as np
from numba import njit
import time
start = time.time()

@njit(cache=True, parallel=True, fastmath=True)
d

元記事を表示

python3 思い出しメモ

# 本記事について
私自身がpython3について思い出したり、基本構文を参考にするためのメモです。

# おまじない
“`python:おまじない
# coding: utf-8
“`

# コメントアウト
“`python:コメントアウト
# コメントアウトできます

”’
複数行のコメントアウトが可能
複数行のコメントアウトが可能
”’
“`

# print
“`python:print
# 数値
print(数値)

# 文字列
print(“文字列”)

# 改行しない
print(xxx, end=””)

# 改行
print()

#********************************** f文字 **********************************
# 参考サイト:https://note.nkmk.me/python-f-strings/
# 記述方法 「123 and abc」と表示
# 「””」「”」どちらでもOK
num = 123
word = ‘abc’

1. print(‘{} and {}’.form

元記事を表示

PyenvとVSCodeでpython3.6のコードをデバッグしようとしたらできなかった

# 症状
PyenvでPython3.6.8にした上で、VSCodeでF5を押してPythonコードをデバッグしようとしたが一瞬デバッグのツールバーが出ただけで動かなかった

# 対処法
一番楽なのはPyenvで使うPythonのバージョンを3.7.0以上に上げること
試してないけど、[pdb](https://docs.python.org/ja/3.6/library/pdb.html#module-pdb)を使う方法も多分いけるはず(注意:バージョンに合ったドキュメントを読むこと)
他にも方法はありそうだけど、具体的には言えません(理由は後述)

# 原因考察
完全には判明していないので考察です
だらだらと書き連ねるだけなので、上の対処法で済む人は読まなくていいと思います

まず、Pyenvに問題がありそうだと思ったので、再インストールしたり(治らなかった)、色々なバージョンを入れてデバッグしたりしました
すると、
| バージョン | デバッガ動作 |
| —- | —- |
| 3.5.4 | x |
| 3.6.7 | x |

元記事を表示

Python3: DynamoDB の scan

次に記述してある制約条件を回避する方法です。
[scan(**kwargs)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/dynamodb.html#DynamoDB.Client.scan)

“`text
If the total number of scanned items exceeds
the maximum dataset size limit of 1 MB,
the scan stops
“`

“`py:scan_id.py
#! /usr/bin/python
#
# scan_id.py
#
# Jul/22/2022
# ——————————————————————–
import sys
import json
import boto3

# —————————————————-

元記事を表示

AWS S3のCSV(Shift JIS)をLambda+pandasで読み込んでみた

windowsユーザー経由で上がるファイルはsjisなことが多く、csvの文字コードがUTF-8じゃないが故に
“`
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x83 in position 0
“`
といったあるあるエラーをS3ファイル->Lambda pandasで解決してみました。

問題はCSVがUTF-8でないことはもちろんですが、もう1つはS3のレスが“`StreamingBody“`なところ。
既存ファイルをUTF-8で上げなおしてくれなんて言えないのでシステムで読み込む方法を模索。
今回のケースでは、
“`python
pandas.read_csv(response, encoding=”shift-jis”)
とか
pandas.read_csv(response, encoding =”cp932″)
“`
と単純にぶっ込んでも同じエラーになりました。

そこで、
“`python
with codecs.open(“file/to/path”, “r”, “Shift-JIS”, “i

元記事を表示

Django Formクラスのprefixの紹介

# はじめに

DjangoでFormを使ったviewを作ってて以下のような不便を感じたことはありませんか?
「1つのviewに2つのFormを表示してるんだけど、同じname属性を持ったinputが2つできちゃって、POSTがわかりずらい」
こんな時に役に立つのが、Formのインスタンス作成時に指定できるprefixです

# コードの紹介

## サンプルとして定義したmodels.pyとforms.py

今回はModelFormでサンプルを示すので、事前にmodels.pyとそれに基づいたforms.pyを定義しますね

“`python:models.py
from django.db import models

# Create your models here.
class TestModel(models.Model):
name = models.CharField(max_length=100)

class SampleModel(models.Model):
name = models.CharField(max_length=100)

元記事を表示

Raspberry Pi におけるネットワークの設定とnumpyとsounddeviceを利用するまでの設定

# はじめに
Raspberry Piの環境がぶっ壊れたので新しく環境を構築しました。
# IPアドレスの設定
`/etc/dhcpcd.conf`というファイルに書き込むことで設定できます。
1. `sudo nano /etc/dhcpcd.conf`で内容を編集
1. `sudo reboot yes`で再起動
### 例
“`
interface eth0
static ip_address=
static routers=
static domain_name_servers=
static domain_search=
noipv6
“`

オプションの意味は`dhcp-options`と基本的には同じだそうなので、下記リンクを参考にしてください。例えば`domain_name_servers`について知りたい場合は`domain-name-servers`の項を見てみると情報を得ることができます。

https://linuxjm.osdn.jp/html/dhcp/man5/dhcp-op

元記事を表示

DynamoDB のデータを web で表示

DynamoDB のデータを web で表示する方法です。
JSON に変換してから、web で表示します。

## JSON への変換 ##

“`py:dynamo_scan.py
#! /usr/bin/python
#
# dynamo_scan.py
#
# Jul/21/2022
# ——————————————————————–
import sys
import json
import boto3
from decimal import Decimal

# ——————————————————————–
def decimal_default_proc(obj):
if isinstance(obj, Decimal):
return float(obj)
raise TypeError
# —————————-

元記事を表示

pythonでutf-8の文字コードを使って正規表現で特定の文字(文字コード)が含まれるか判定

### タイトルの内容を実現しようとした背景から書きます

## 背景
#### やりたかったこと
例として、『ゼロ幅スペース』(UTF-8 :「E2 80 8B」)などがファイル中に含まれているかチェックしたかった

“あ”のような通常の文字であれば、ソースコードに書けますが
『ゼロ幅スペース』の場合は書いてしまうと(たとえコメントを書いていても)
わかりにくいと思い、「この文字コードを指定している」と明示しようと
考えた次第です。

それに加えて、入力データ中でチェックしたい文字コードは『ゼロ幅スペース』だけではないと判断できたので、文字コードの範囲を指定して**正規表現**でチェックをしようと考えました。

#### なぜ文字コード(utf-8)で指定しようとしたか
想定していない文字コードが文字化けをしたときに、xddコマンドで調べると表示されるのはutf-8のコードだった。

文字化けした
 -> xxdコマンドで原因となる文字コードを特定
  -> utf-8で表示された文字コードをpythonでチェックしたい

#### ネックになった部分
・utf-8を

元記事を表示

threadingをやめてasyncio&aiohttpで楽にPythonスクレイピングを行う

効率的なスクレイピングを行うにはリクエストとレスポンス間の待ち時間をなくすこと。これを実現するためにはthreadingモジュールでマルチスレッドか、asyncモジュールで並列処理をするかだ。

マルチスレッドは気軽に実装できる反面、デバッグが困難になる。asyncの非同期処理はコード量がやや増えるが、デバッグが楽。

この記事を呼んで我に返った

https://qiita.com/Toyo_m/items/992b0dcf765ad3082d0b

よし、threading使うのやめて、async使おうってことで試作したコードが以下

やっていることは、リクエストをしてスリープを1秒間を5回実行する(※スリープの理由は逮捕は嫌なので)

ネット環境によるのだろうけど、5回で2秒近くの処理時間の差が生まれる

“`python3
import aiohttp
import asyncio
import time
import requests

url = ‘https://qiita.com/osorezugoing/items/4ea5249c43c0ba8b89aa’
st

元記事を表示

NumPyのインポートエラーでつまづいた

#### 概要
最近Pythonを学び始めた初心者です。
学習を進めるにあたってnumpyというライブラリを利用しようとした際に躓いたので、解決に至ったまでを書き残そうと思います。同じような状況の方は試してみてもらえればと思います。

#### 環境
Windows 11
vscode: 1.69.2
Python: 3.9.12
Anaconda:4.12.0

#### 1.インストールされているか確認した
VSCodeを使って NumPyを使うには、Python Extension Packをインストールする必要があるとのこと。Extension MarketPlaseから入手可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/8076527b-30a4-118d-51b5-cb832e111968.png)

#### 2.環境変数の確認
VScodeを開き、ファイル→ユーザー設定→設定に行き、Python.PythonPathと入力すると、、、あれ、何も

元記事を表示

3の倍数・3のつく数字だけアホになるプログラム①(小学生高学年向け・python)

この記事は、岩手県八幡平市のプログラミング教室「アクセルキャンプ」の公開教材です。
[アクセルキャンプ(フリースペースプラウド)のリンク](https://freespaceproud.com)
教材の作成依頼等も承っております。ご意見等は、リンク先の問い合わせ欄からお願いします。
教材の転用・利用等は自由です。

# (小学生)アクセルキャンプ高学年クラス7/20
# 「3の倍数と3のつく数だけアホになる」プログラム
(参考動画:[世界のナベアツ](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=video&cd=&cad=rja&uact=8&ved=2ahUKEwixldHDoYb5AhUTAYgKHcjhDxkQtwJ6BAgLEAI&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DS3sxqexw6pU&usg=AOvVaw1aczeZv8yXkUjdpGJOyQK7))
プログラムの使用は以下の通りです。
>①まず、1から30までの数字を連続で出力す

元記事を表示

Zoomミーティング予定をSlackに流し、Zoom APIを用いて通知しようとしたけどうまくいかなかった話

## はじめに

 山形大学大学院修士1年のHagianです。この記事は[Qiita Engineer Festa 2022 「Zoom API/SDKを使ってみよう!」](https://qiita.com/official-events/86d8555146e1b14fef24)に参加するつもり(つもり)で執筆しました。

## やってみたかったこと

 コロナ禍になってから、大学の講義も一気にオンライン(ミーティングツールを用いたリアルタイム形式)やオンデマンド(資料を参照しながら講義を決められた時間内に受ける形式)等によるものが増えました。最近では講義ごとにPDFファイルなどにまとめられて、ミーティング予定が提示されるようになりました。しかし、毎回開いて確認するのが少し ~~面倒~~ 手間だなと感じていました。

 そこで、このミーティングの予定をSlackに流し、スマホ等の別端末でも確認できるようにしたいと思いました。まとめますと以下の通りです。

* PDFの情報をCSVに変換、保存
* ミーティングID・パスコード抽出
* Slackに予約投

元記事を表示

Pythonでアーキテクチャ図を書いてみた:備忘録

# 概要
アーキテクチャ図のツールがいろいろある中で、Pythonコードを使って簡単に書けるというので試しにしてみました。その備忘録です。

# 準備
環境を整えます。
MacBookを使用していて既に`Python3`はインストール済みです。
それで追加インストールを以下の通り`ターミナル`から実行しました。
`Diagrams`を使用します。これは`graphviz`に依存しているので以下のように両方ともインストールします。
“`zsh:zsh
$ pip3 install diagrams
“`
“`zsh:zsh
$ brew install graphviz
“`

# ソースコード:アプリケーション
アプリケーションのアーキテクチャ図を描いてみるサンプルコードです。
“`Python3:aplication.py
# アーキテクチャ図:アプリケーション
from diagrams import Cluster, Diagram
from diagrams.programming.framework import React
from diagrams.progra

元記事を表示

Docker + Python + Flask で本番環境とテスト環境のポート番号の振り分け方法

## やりたいこと
Dockerのコンテナとのポートフォワーディング(ポート番号指定)を「テスト環境(自端末)」と「本番環境(heroku)」でソースファイルを分ける事なく実現したい。

::: note info
①テスト環境ではホストOSの「8888」番ポートをコンテナの「8888」番ポートと紐づけたい。
②本番環境ではポート番号はheroku側で自動割当されるので、それを利用したい。
:::

ネット調査をしてくと「dockerfile」や「docker-compose.yml」を本番環境用とテスト環境用でわけるような手法がありました(パット見でよく読んでいませんが)が、これは避けたかった。

## 前提
– 本番環境:heroku
– テスト環境:ローカル端末(自分のPC)
– docker-compose.ymlを利用
– dockerfileを利用
– pythonでアプリは実装
– webserverはflaskを利用
::: note info
できるだけ最小の単位で実現したかったという思いから、「do

元記事を表示

色んな高さの「ピー」音のファイルを沢山作る(Python3)

# きっかけ
 超基礎的な音感トレーニングアプリを作ってみたかった。でも、ピアノ音のファイルが見つからなかった(1オクターブ分くらいはあったけど)。
 困ったので自分で作りました。ピアノの音色ではなく「ピー」音ですが、音感トレーニング用なら悪くない?(素人なので分からない)

# 気づき
ピアノの鍵盤って、一つ隣の音との周波数の比はどこも同じらしいです。ということは **周波数だけ考えると鍵盤の白と黒って特に意味ない** ってことですよ。レ(白)→レ#(黒)と、ミ(白)->ファ(白)の周波数比は同じなんですよ。黒はちょっとしか上がらないんだと思ってました。びっくりですよね。

# サンプルコード
**ラ(440Hz)から始まり、ラ#、シ、ド、ド#・・・ラ(1760Hz)と2オクターブ上まで1ファイル ずつ作ります**
– もっと沢山作りたい場合は`np.arange`の25を増やせばok
– 出力先のディレクトリ(`OUTPUT_DIRECTORY`)は先に作っておかないとエラーになります。もしくは`OUTPUT_DIRECTORY = ‘./’`に変えちゃえば動きます
– impor

元記事を表示

pythonのレスポンス指標ー関数時間測定編

# この記事では.
データ分析でのレスポンス測定は以下の記事通り __timeit, time__ を利用します。
基本的にデータ加工などにかかる時間などワンライナーなコードを対して実行します。
https://qiita.com/binary2/items/6560a190b3fdb26cdaf9

“`python
%%timeit
df_test[“date_dt”] = df_test.datetime.dt.strftime(“%Y-%m-%d”)
# 2.18 s ± 55.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
“`
今年度からraspberrypiを利用した開発をすることになったので、分析以外でpythonを利用することになった。
また、システム開発ではないのでセンサーなどのやり取りもしないといけなく、分からないことだらけ orz…

まずは、何の処理に時間がかかっているのか?を把握する必要がある。
ある程度汎用的にレスポンス測定できるようにする。

開発なら最終的にクラスにするべきだが、

元記事を表示

anaconda インストールからPATH設定まで

Anacondaをインストールして、実際に使用できるまでの手順。

**対応OS**
Windows 10

### 1. Anacondaをインストール
公式サイトよりインストーラを取得する。
https://www.anaconda.com/products/distribution

exeを起動してインストーラを実行、選択肢はデフォルトの状態でOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/662954/8dfda3f8-a70a-de57-71c6-6773ca1741f8.png)

インストールは結構長いです。(10分以上自分はかかりました)

### 2. PATHの設定
環境変数のPATHに、以下の3つを設定。
– C:\Users\[ユーザー名]\anaconda3
– C:\Users\[ユーザー名]\anaconda3\Scripts
– C:\Users\[ユーザー名]\anaconda3\Library\bin

入力後、PCを再起動。

### 3. 確

元記事を表示

整数aが整数bの倍数かどうかの判定方法

余りが0になれば割り切れる。

a % b == 0

元記事を表示

OTHERカテゴリの最新記事