Python関連のことを調べてみた2021年05月13日

Python関連のことを調べてみた2021年05月13日

motoを使ったテストで Access Denied

# はじめに
個人の備忘録用です。

# 各種バージョン
* Python : 3.7
* pytest : 6.2.4
* boto3 : 1.17.71
* moto : 2.0.6

# 問題点
motoを使って単体テストを実装した時に、boto3がなぜか実際のAWSに接続していた。

## 実際のコード

* 実際の処理

“`python
import boto3

class S3Service:
def __init__(self):
self.client = s3.client(‘s3’,
aws_access_key_id=”aws_key”,
aws_secret_access_key=”aws_secret”,
region_name=”ap-northeast-1″)
def upload(self, key: str, file_path: str):

元記事を表示

温度/湿度センサー (DHT22) も Raspbery Pi で使ってってみた (メモ)

adafuit が DHT22 の [Python モジュール](https://github.com/adafruit/Adafruit_CircuitPython_DHT) も作っています。最新版は以下に説明があります。モジュールの詳しい使い方は[ここ](https://readthedocs.org/projects/adafruit-circuitpython-dht/downloads/pdf/latest/)にあるようです。

https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging/python-setup

ただ理由は不明ですが Raspberry Pi Zero WH では結果が全て “A full buffer was not returned. Try again.” のエラーで動きませんでした。Rasrpberry Pi 3 では[ここ](https://forums.adafruit.com/viewtopic.php?f=19&t=160892#p79

元記事を表示

Selenium 画面外の要素を画面内に表示させる

#はじめに
本記事は「要素は存在するけど、クリック操作できない」という場合の対処法です。
↓こんな感じのエラーの時です。

“`
unknown error: Element is not clickable at point
“`

#要素が画面外にあるので、スクロールして表示させる
要素が画面表示外にあるため、操作できなくなっているはずです。
なので、画面内に表示するようスクロールしてあげます。

“`python:要素を表示するようスクロール
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

# クローム起動(カレントディレクトリにwebdriverを設置済)
driver = webdriver.Chrome()

# ページの表示
driver.get(“https://==========================”)

# クリックするとエラーになる要素の取得
element = driver.find_eleme

元記事を表示

Windows Terminalのプロファイル設定

# はじめに

## やりたいこと

* PowerShell、Windows Terminalをインストールする
* Git・Python用のプロファイルを設定する

# 説明

## そもそも、ターミナル(Terminal) と シェル(Shell) とは?

* シェル
* ユーザがOSを操作するためのインターフェース
* cf) bash, zsh, powershell
* ターミナル
* 標準出力を文字として表示したり、キーボード入力を取得したりするプログラム
* cf) GNOME Terminal, xterm

* 主に、ターミナルを介して、シェルを操作する
* 本記事では、Windows Terminal(ターミナル) を介して、PowerShell、Git Bash(シェル) を操作する。

# 手順

## PowerShell をインストールする

1. Microsoft Store 経由で PowerShell をインストールする
* ダウンロードサイト [PowerShell を入手 – Microsoft Sto

元記事を表示

二酸化炭素センサー (MH-Z19B) を Raspberry Pi で使ってみた

# MH-Z19B を買ってみた

[二酸化炭素(CO2)濃度が高くなると、集中力が低下し、また頭痛や眠気の原因になる](https://www.watch.impress.co.jp/docs/review/review/1295050.html)ということが広くまことしやかに囁かれだしたのは新型コロナウイルスの影響で在宅勤務が増えてからだったと思います。[厚生労働省のページ](https://www.mhlw.go.jp/bunya/kenkou/seikatsu-eisei10/)では 1000 ppm 以下が推奨されていますが自分の部屋が現在何 ppm なのか測定する装置が無いとまったく分かりません。

ということでミーハーな私は二酸化炭素濃度を測定するセンサーが欲しいなと思ってたんですが今回遅ればせながら [MH-Z19B](https://www.winsen-sensor.com/sensors/co2-sensor/mh-z19b.html) を購入しました。AliExpress だと $20 程度で購入可能です。半田付けの必要がないピン付きのものが便利なようです。

元記事を表示

Windows10にPythonをインストール

# Windows10にPythonをインストール

Windows10にPythonをインストールしたときの、チェックボックスをメモとして残しておく。

## インストーラをダウンロード
* ダウンロードサイト ([www.python.org](https://www.python.org/))
* ダウンロードサイト上部の”Downloads”をクリック
* “Download Python 3.9.5″をクリック

## Pythonのインストーラを起動
* “このアプリがデバイスに変更を加えることを許可しますか?”は”はい”を押す

### Install Python 3.9.5 (64-bit)
* ☑ “Install launcher for all users (recommended)”
* ☑ “Add Python 3.9 to PATH”
* ☑ “Customize Installation”
* “Next” をクリック

### Optional Features
* ☑ “Documentation”
* ☑ “pip”
* ☑ “tcl/tk

元記事を表示

風景を北斎風に変換するアプリつくりました

技育CAMPの初めてのハッカソン~vol.3~に参加した記事です。

#開発したもの
アップロードされた画像を北斎風に変換して出力するwebアプリです。僕にとっては初めてのwebアプリ開発でした。
URL:https://github.com/koouu/hackathon20210508
![henkan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503318/a109b506-86c8-465c-c9f1-a9af34f07624.png)

#チームメンバー
学校の同級生と2人で出場しました。

役割
僕  :画像変換、バックエンド
N君 :フロントエンド

使用した技術
![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/503318/701c72a9-a819-13e7-71d5-0c98c4eb2306.png)

#変換モデル
Googleのcolabで、画像変換の機械学習を行っていました

元記事を表示

PythonでのIPアドレスの取扱いについて

#はじめに
IPアドレスの8進数の不適切な検証の脆弱性(CVE-2021-28918)がPythonのipaddressモジュール影響あるということで、ipaddressにおけるIPアドレスの取扱いを調べた。
また、ドット区切りIPアドレスからドット区切りなしIPアドレスへの変換を行う関数を作成した。

#ipaddressモジュールにおけるIPアドレスの扱い
以下のように、ipaddressモジュールがインポートされていることを前提とします。

“`python
>>> import ipaddress
“`
例として、ローカルループバックアドレス(127.0.0.1)を用います。

##ドット区切りIPアドレスにおける8進数の扱い
先頭の0は単に除外される

“`python
>>> ipaddress.IPv4Address(‘127.0.0.01’)
IPv4Address(‘127.0.0.1’)
“`

3桁を超えるとエラーになる

“`python
>>> ipaddress.IPv4Address(‘0127.0.0.1’)
Traceback (most r

元記事を表示

目次・まとめていきたいこと

# 勉強し、まとめていきたいもの

* Figma
* Figmaを使ったWeb開発の高速化
* GCP
* 資格取得にむけて
* Python
* Djangoの開発

# 今後にむけて
随時内容を更新していこう
将来の見通しはわからないし、どうなるかもわからない
でも、そんな中でも自分ができるのは準備しておくこと
今後のためにいろいろ勉強して、準備をしておこうと思う

元記事を表示

Wine での Python のありかのメモ(Python 使う app の cross-compile 用)

## 背景

Python を使うアプリ(e.g. pybind11)を Linux で cross-compile したい

python.org にある embedded(zip)だとヘッダファイルとかが無い.

どのようにしてビルドしたかの config.h ファイルが異る(はず)であろうから. .lib/.h だけ適当にディストーションから抜き出して利用というのも問題がありそう.

wine を使って .exe(installer)の Python を使うとします.

Python 3.9 を想定します.

## 手順

winecfg で, 利用する Windows バージョンを指定しておきます.

3.9 からは Windows 8.1 以上でないと使えなくなったようです.

あとはインストーラー起動してファイルインストールすれば OK

デフォルトでは, Windows 10 に設定した wine では(Linux 上では)以下にインストールされました.

“`
.wine/drive_c/users//Local Settings/Applicat

元記事を表示

AWS Lambda (Python 3.8)&Wrike APIで取得したjsonをパースし任意のキーで取り出してみる。

#この記事の概要
https://qiita.com/katoiek/items/b2fb9ce7ad759e5fb5aa
の続き。

せっかくなのでほしい要素を取り出してみる。

#本記事の投稿者
前も来ましたがPython&Lambda初心者(両方とも初めて書いてみた)なのでセオリー的なPerseの仕方などはわからないので地下わら技です。

#大まかな手順
Wrikeで永続トークンを生成し、LabmdaでPythonの関数つくって実行し、かえって来たクエリの任意のキーを取り出す。

#今回の目的
サンプルソースからpermalink要素を抜き出す。
今回はpermalinkをキーとしましたが、その他クエリに使えそうなキーはWrike公式APIリファレンスを参照してください
https://developers.wrike.com/api/v4/tasks/#query-tasks
→こちらのResponseです。

#APIからのレスポンス(例)
“`sample.json
{
“kind”: “tasks”,
“data”: [
{

元記事を表示

Python lambdaでの処理

# はじめに
Pythonのlambda式を自身がよく忘れてしまいがちなので, メモとして残しておきます.
他の方の参考にもなればと思います.
`間違っている箇所もあると思いますので, コメントしていただけると幸いです.`

Pythonはdef()で関数を定義しますが, lambda式で無名関数を定義することができます.
**def()** を用いた関数の場合、引数として直接他の関数に渡すことができず, 違う場所で定義してから値を渡す必要があるのに対して, **lambda式**は, あくまで「式」であるので, 関数の引数として直接渡すことができます!!!!

次の節から例を紹介していきます.

# def文とlambda式の対応関係

“`python
def add(x, y=1):
return x+y

print(add(1,2))
# 3

print(add(100))
# 101
“`

上記のdef文を, lambda式に変換した場合

“`python
f = lambda x, y=1: x+y

print(f(1,2))
# 3

print

元記事を表示

Flask-RESTX Swagger ドキュメント表示を無効にするいくつかの方法

FlaskでRest APIを実装するための拡張 Flask RESTX には、Rest API仕様を表示してくれる機能が内蔵されています。その実態はSwaggerというAPI仕様を記述するJSONドキュメントと、それを見やすく表示してくれるSwagger UIの組み合わせ。ほかの多くのWebフレームワークにも同じ機能が載っています。

“`python
from flask import Flask
from flask_restx import Api, Resource, fields

app = Flask(__name__)
api = Api(app)

@api.route(“/sample”)
class SampleResource(Resource):
def get(self):
“”” サンプル “””
pass

@api.expect(api.model(“Sample”, model={“name”: fields.String}))
def post(self):
“”” サン

元記事を表示

Django周りの開発環境をインストールする

# はじめに

私はプログラミング歴1年の初心者です。
実務でWebサイトのコーディングを1年間行ってきました。
そろそろシステム開発もできるようになりたいということで
LaravelやReactをこれから勉強していこうと思っております。

# 今回の目的

今回はDjangoの環境構築方法を学んでいこうと思います。
Homebrewを使ってインストールしていきます。
本当は仮想環境を立ててインストールするほうがいいらしいのですが
今回は初めてなのでその部分は端折っていきます。

# 目次

1. Pythonのインストール
2. Djangoのインストール

# 実際にやってみる

## Pythonのインストール

“`terminal
# HomebrewでPythonをインストールする
$ brew search python
$ brew install python3

# PATHの設定
$ echo “export PATH=/usr/local/bin:$PATH” >> ~/.bash_profile
$ source ~/.bash_profile

# pyt

元記事を表示

[python] リスト内包表記内でprintしたい

小技です。
検索してもそれっぽい感じの記事があまり出なかったので投稿。

# 前提
リスト内包表記内で時間のかかる処理を行っているとき、進捗状況を`print`したい!
ということが人によってはあると思います。ないかも。

“`python:print_in_list_test.py
import time
def heavy_function(num):
time.sleep(1) # めちゃんこ時間かかる処理
return “かたつむりが{num}匹”.format(num=num)

def print_in_list_test():
#print() # 進捗状況を出力したいけど、全部やった後かやる前しか出力できない
outputs = [heavy_function(num)
for num in range(1, 10)] # ここでめっちゃ時間かかる…
print(“、”.join(outputs))

print(“処理開始”)
print_in_list_test()
print(“処理終

元記事を表示

PyTorchで勾配降下法

PyTorchで勾配降下法をするコードを書いてみました。

# 最適化したい関数

“`python
def rosenbrock(x0, x1):
y = 10 * (x1 – x0 ** 2) ** 2 + (x0 – 1) ** 2
return y
“`

# 関数を可視化する

“`python
import numpy as np

h = 0.01
x_min = -2
y_min = -3
x_max = 2
y_max = 5

X = np.arange(x_min, x_max, h)
Y = np.arange(y_min, y_max, h)

xx, yy = np.meshgrid(X, Y)
“`

最小値はこのへんですね

“`python
matrix = rosenbrock(xx, yy)
minimum = None
min_x = None
min_y = None
for i in range(matrix.shape[0]):
for j in range(matrix.shape[1]):

元記事を表示

[python3] EUC-JPなのにShift-JISの機種依存文字が入っててUTF-8にできなかったときの対策

表題の通りです。
先人が機種依存文字対策に苦心した痕跡がちらりほらり…
※ はしご高とかそういうタイプの機種依存文字はこの記事では扱いません。

# 環境
Windows 10
Python 3.8.5
スクレイピング:requests

# 状況(読まなくても良い)
最近 [seesaawiki](https://wiki.seesaa.jp/) の記事の自サイトへの移植をごそごそとしているのですが。

seesaawikiからスクレイピングでHTMLソースを取得すると、
``
とあって確かに **EUC-JP** のはずなのに、wikiソース内で「**①**」のような **Shift-JIS** の機種依存文字が使えるせいでたまにこれが紛れてくるんです。
で普通に

“`python:
res = requests.get(url)
text = res.html
“`

みたいに結果を取得しようとすると、なにやら`REPLACEMENT CH

元記事を表示

[Django]ManyToManyの有無でフィルタリングしたい

# 動機
Django(3.1)で、ManyToManyField(多対多のrelation)を持つmodelを考えます。
このとき、**対象のFieldにレコードがセットされているか否か**でフィルタリングをしたい場合があります。
例えば以下のようなmodelを考えます。一つの記事に複数のタグがついている想定です。

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

# タグ
class Tag(models.Model):
name=models.CharField(verbose_name=”名前”,max_length=32)

# 記事
class Article(models.Model):
title=models.CharField(verbose_name=”タイトル”,max_length=32)
text=models.TextField(verbose_name=”本文”)
tags=models.ManyToManyField(Tag,verbose_name=”タグ”,rel

元記事を表示

Python Tips

###配列の中に含まれるかどうか

“`hoge.py
#domain_listが配列 target_domainが変数
result=target_domain in domain_list

#配列内にあればTrue
if(result==True):
continue
“`

###メインプログラムの書き出し
「if __name__ == ‘__main__’:」の呪文をつけておくと、外部ファイルからhoge.pyファイルを読み込まれたときに、勝手に実行されない。

“`hoge.py
if __name__ == ‘__main__’:
“`

###乱数を発生する

“`.py
import random

#0-100の乱数を発生させる
i=random.uniform(0, 100)

#整数化(注意点あり)
seisu=int(i)
“`

###フォルダ内のファイル名を取得する

“`.py
#フォルダ内のファイルパスをすべて取得する
import glob
im

元記事を表示

[Python] OpenCVのインストール方法 (mac)

#OpenCVとは
OpenCVとは `Open Source Computer Vision Library` の略です。
画像処理や画像解析や機械学習の難しい機能を、誰でも簡単に使えるようにまとめて整えたプログラムの集まりで、誰でも無料で使える機能です。

#インストール方法
homebrewを使ってopenCVをインストールします。
以下のコマンドを実行します。(インストールが終わるまで10分ほどかかります。)

“`
$ brew install opencv
“`

次に以下のコマンドを実行して、pipで対応するモジュールをインストールします。

“`
$ pip3 install opencv-python
“`

#インストールできたのかを確認する

“`
$ python3
“`

実行して以下のように表示されれば成功です。

“`
Python 3.9.5 (default, May 4 2021, 03:36:27)
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type “help”, “copyr

元記事を表示

OTHERカテゴリの最新記事