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

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

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

元記事を表示

Mcomixでavif形式をサポート

# はじめに

python3ベースでforkしているmcomixに手を加えてavif形式の画像表示を可能にした。

# 環境
Linux Mint 19.3(おそらく他のものでディストリビューションでも問題ない)
git
python 3以上
pillow-avif-plugin1.2.2以上(公式web: https://pypi.org/project/pillow-avif-plugin/)

# mcomix(python3)ソースの取得
git cloneにて参考になるソースを自分の作業ディレクトリに移行する。

“`
$git clone https://github.com/multiSnow/mcomix3.git
“`

# ライブラリのインストール
avif形式のサポートはpillow-avi-pluginを導入する

“`
$pip3 install pillow-avi-plugin
“`

# avif-pluginのコードを追加
PILライブラリをインポートしているあたりに追加する

“`mcomix/lib/image_tools.py
imp

元記事を表示

Django 作成者 作成日時 更新者 更新日時を管理する

## 環境
Windows 11 Home
Python 3.10.2
Django 4.0.2
venv利用あり
(PyPI)
記事の中でインストールあり
条件:関連記事 第1回が完了していること

## 関連記事
Django 第1回:[Django Custom User Model の作成](https://qiita.com/startours777/items/706d38e712b0c737a16a)
Django 第2回:[Django 初回ログイン時にパスワード変更を強制する](https://qiita.com/startours777/items/28db625a9bb81a36d4ad)
Django 第3回:[Django 一定期間パスワードを変更していないユーザにパスワード変更を強制する](https://qiita.com/startours777/items/d550ca9b67cea4408a44)
Django 第4回:[Django ランダムかつ有効期限のあるURLを生成し、上位者に承認してもらいアカウントを発行する](https://qiita.

元記事を表示

Python3でQuoted Printableエンコーディングを再現してみた

# Quoted Printable とは
以下、wikipediaからの引用です。
>Quoted-printable(QP encodingとも呼ばれる)は、印字可能な文字(例えば、英数字や等号「=」)を使用した符号化方式であり、8ビットデータを7ビットデータパスで転送するためのものである。インターネット電子メールで使用できるようにするため、Content-Transfer-Encoding として定義されている。

コンピュータ黎明期で資源が少なく、1bitが貴重な昔の時代に、少しでもサイズを小さくしようと7bitで設計されたASCII文字と、utf-8などの他の文字コードの互換性を保つ必要があるシチュエーションにおいて、8bit ↔︎ 7bit のQuoted Printableエンコーディングが用いられることがある。
と解釈しています。

## アルゴリズムの特徴
元のデータがASCII文字を多く含む場合、エンコードされた文字列をほぼそのまま読むことができ、エンコード後のサイズも小さくなる。
日本語など、ASCII文字を多く含まない場合はエンコード後は “=E3=8

元記事を表示

PythonからMermaidの図表を取得する

## メモ
– 実際にはPythonで画像を生成するのではなく、WEBサービスを利用する
– Pythonはただリクエストパラメータを生成するだけ
– 取得すると書いたが、下記PythonコードではURLの生成まで
– ファイル形式はSVGかJPEG
– リクエストデータ量を減らしたい場合は圧縮のURLを利用する

https://mermaid.ink/

## ソースコード
“`
code = “””
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1 , 20d
section Another
Task in sec :2014-01-12 , 12d
another task : 24d
“””.strip()

state = {
‘code’: code,
}
ascii_bytes =

元記事を表示

Python 3のデバッグ環境構築(Visual Studio Code + Windows 10 with Poetry)

# 概要

* 以下のデバッグ環境を構築する。
* Windows 10
* Python
* Poetry

# 前提条件

* Python 3 インストール済
* Visual Studio Code インストール済
* Visual Studio Code の操作について習熟していること。

# 環境

* Windows 10 21H2
* [Python 3](https://www.python.org/) 3.10.5
* [Poetry](https://python-poetry.org/) 1.1.14
* [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) 1.69.1
* [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) v2022.10.1
* [Python Poetry](

元記事を表示

OTHERカテゴリの最新記事