Python3関連のことを調べてみた2020年10月16日

Python3関連のことを調べてみた2020年10月16日
目次

PyCryptodome AES暗号化と復号メモ

AES暗号化メモです。

環境
Python3.7
pycryptodome 3.9.8

##ソースコード

“`python3
# -*- coding: utf-8 -*-
from Crypto.Cipher import AES

key = b”1234567890123456″
data = b”hogehoge” # 暗号化する文字

# 暗号化処理
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)

print(ciphertext)
print(tag)
print(cipher.nonce)

# 復号処理
cipher_dec = AES.new(key, AES.MODE_EAX, cipher.nonce)
dec_data = cipher_dec.decrypt_and_verify(ciphertext, tag)

print(dec_data)
“`

##結果
“`
b’7\xecO,\xa4J\\:’
b’\x8eQ

元記事を表示

MNISTの行列表示

python==3.7.9
Keras==2.2.4
tensorflow==1.13.1

#mnistを画像表示する

“`python

import urllib.request
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np

#prox = urllib.request.build_opener()
#urllib.request.install_opener(prox)

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

plt.imshow(x_train[0])
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/a6a1291f-bd0f-9f8a-8ddc-1a899cf54402.png)

#行列

元記事を表示

GoToEatキャンペーン対象店舗をマッピングして楽しむ

#はじめに

鳥貴族マラソン等で話題になったこともあり、GoToEatキャンペーンが気になりました。
今回はPythonのスクレイピングとマッピングの手法を使って、キャンペーン対象店舗をマッピングしてみたいと思います。
[農林水産省のGoToEatキャンペーンサイト](https://gotoeat.maff.go.jp/)
# 使用データ
[食べログのキャンペーン対象店舗](https://tabelog.com/go-to-eat/list/)のページをスクレイピングして情報を集めました。

ざっと見た感じですとスクレイピングが禁止という文言はサイトに見当たらなかったので…

スクレイピングのソースコードは今回は割愛し、概要だけ載せます。
取得する情報は、[‘店名’, ‘ジャンル’, ‘口コミレート’, ‘最低予算’, ‘電話番号’, ‘喫煙情報’, ‘住所’, ‘都道府県’, ‘エリアコード’, ‘URL’]とします。

![tabelog.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6802

元記事を表示

KivyでYes No Popupを作る

# 概要
はい・いいえを聞くダイアログが欲しかったので、使いまわしやすいような形で作りました。
![Demo](https://github.com/Take-Me1010/Yes-No-Popup/blob/main/image/demo.JPG?raw=true)

# コード
[git](https://github.com/Take-Me1010/Yes-No-Popup)にも置きました。

“`__init__.py
”’
a simple Yes/No Popup
LICENSE : MIT
”’
from kivy.uix.popup import Popup
from kivy.properties import StringProperty

from kivy.lang.builder import Builder
Builder.load_string(”’
#
:
FloatLayout:
Label:
size_hint: 0.8, 0.6

元記事を表示

Python3でWebスクレイピングとYouTube Data APIとMongoDB(ホロライブの動画配信予定を収集 その2)

## はじめに

前回([https://qiita.com/kerobot/items/6009cb0db643bceaf4e9](https://qiita.com/kerobot/items/6009cb0db643bceaf4e9))は、ホロライブの配信予定や動画情報をホロジュールと Youtube から収集するプログラムを作成しました。
今回は、収集した情報を MongoDB に登録するようにしてみます。

![img01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283306/0c554f2f-c1c7-9f00-3837-4054416ab9d8.png)

前回のプログラムをもとに MongoDB の処理を追加するだけですが、Poetry と pyenv を利用するため、プロジェクトの構成やプログラムの内容も全体的に変更します。

Azure Cosmos DB (Mongo API) も調べ始めたりしたのですが、価格モデルがいまいち理解できず、意図しない課金を避けるために断念しま

元記事を表示

pythonで、モジュールのインポートと例外処理

### Pythonのモジュールインポートの環境作り
1、メインフォルダーにディレクリーパッケージをつくる
2、そのディレクリーパッケージにディレクリーフォルダーとファイルを作る。
 必ず__init__.pyを作る。
 Pythonがこのファイルを認識して、モジュールを呼び出すため
3、その中に、utils.pyも作る
4、3に任意のファイル a.py b.pyの2種類のファイルを作る。のちに定義した関数を呼び出すため
5、次に、ディレクリーパッケージに別のディレクリーフォルダも作る。
6、同様に、__init__.pyを作る.
例外処理は、古いパッケージまた新しいパッケージが混じってもエラー対応するため。

### モジュールを呼び出すコード
“`python
from directly_package.directlyfolder1 import a.py //a.pyは、directlyfolder1にある
from directly_package.directlyfolder2 import b.py
print(folder1.function()) //ファンクション

元記事を表示

RealSense L515で参考にしたサイト

以下のページだけでpyrealsense2を入れて、サンプルコードを動かすことができました。
途中のシンボリックの部分に関しては、環境ごとに場所が違うので対象ファイルを探してlnしましょう。
また、サンプルコードですが、L515の対応している解像度が違うので書き換える必要があります。

####参考
pyrealsense2
https://qiita.com/comachi/items/14b358568365bc5ee474
l515が対応している解像度
https://github.com/IntelRealSense/librealsense/issues/6684

元記事を表示

Pythonで開発するときのおすすめの環境と使い方

#はじめに
現在、Pythonで開発するときのおすすめの環境をご紹介します。
僕のおすすめですので異論は認めます。
突然ですが、私はプログラミングをしていて重要だと思っているのは、**できる限りストレスなく開発すること**だと思っています。
**自分好みの環境や設定を見つけていきましょう!**

# Python
まずは、Pythonをインストールします。
この記事を書いている時点での最新バージョンである**3.9.0**をインストールします。
### インストーラーのダウンロード
まずは、公式サイトを開いてインストーラーをダウンロードします。
[Python.org](URL:https://python.org/)
まずは、Pythonの公式サイトを開きます。
![Python.org](https://mendoitarou.com/blog/wp-content/uploads/2020/10/Python-Website.png)
“Downloads”にマウスカーソルを置き、”Python 3.9.0″をクリックします。
そうすると、Pythonのインストーラーがダウンロー

元記事を表示

【Django】ログ出力機能について初心者でもわかるように簡単にまとめる

#はじめに
DjangoのLogging機能って初見だとよくわからない内容もありますよね。特に設定ファイル。
簡単・簡潔にまとめていきます。

#本番環境想定の設定ファイル
ログの設定ですが、自分で設定を行わない場合(settings.pyにLOGGINGの定義が無い場合)[Djangoソース内に含まれているデフォルト設定](https://github.com/django/django/blob/master/django/utils/log.py)が使用されます。
しかし、出力されるログがあまり見やすくないので自分で設定する場合がほとんどです。
以下、本番環境を想定した設定例です。settings.pyに以下内容を追記します。

“`settings.py
LOGGING = {
‘version’: 1,
‘disable_existing_loggers’: False,
# ログ出力フォーマットの設定
‘formatters’: {
‘production’: {
‘format’: ‘%(ascti

元記事を表示

【Udemy Python3入門+応用】  68. Import文とAS

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

##■import文とas
####◆import
こんな風にディレクトリとファイルを用意する。

“`
lesson_package
├ __init__.py
└ utils.py
lesson.py
“`

“`python:utils.py
def say_twice(word):
return (word + ‘!’) * 2
“`

“`python:lesson.py
import lesson_package.utils

元記事を表示

【Udemy Python3入門+応用】  67. コマンドライン引数

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

##■コマンドライン引数
“`:terminal
python3 test.py arg1 arg2
“`
“`python
import sys

print(sys.argv)
“`
“`:result
[‘test.py’, ‘arg1’, ‘arg2’]
“`
ターミナルからPythonファイルを実行する際、Pythonファイル名の後ろに引数を渡すことができる。
これらの引数は `sys.argv` にリストとして格納される。従って、

元記事を表示

Python3 で websockets の async/await を隠蔽する

`asyncio` が入る [websockets](https://websockets.readthedocs.io/en/stable/index.html) を使用した関数が上部に波及してどこまでも `async/await` になってしまうのか…と思っていたところ[自作ライブラリでなんとかなった](https://qiita.com/shirasublue/items/f51986f39dd8a3bf8310)のでその部分の忘備録

# 解決策

– デコレータを使いました

# 環境

– Python 3.8.5
– websockets 8.1

# コード

### my_library.py

“`Python3
import websockets
import asyncio

class EntitySpec(object):
def __init__(self, ctx):
self.ctx = ctx
self.uri = “ws://{}:{}”.format(
ctx.hostname,

元記事を表示

初心者がやりがちな変数命名のアンチパターン

## はじめに
ご存知のようにPythonはその書きやすさからプログラミング初心者にも敷居の低い言語として親しまれており、「初めて触れる言語がPython」という方も少なくありません。
しかしそんなPythonにもやってはいけないアンチパターン(禁じ手)があり、初心者が知らずに踏んでしまうと対処に苦しむ事になってしまいます。
そこで、Pythonのアンチパターンのうち、特に初心者が注意すべき**「変数の命名」**の中でも特に致命的な**同名変数定義による代入**についてご紹介させていただこうと思います。

## 悪い例
下のコードは、タプル型変数`tuple`の中身をリスト型に変換して、リスト型変数`list`と結合させるものです。
一見至って普通のデータ操作ですが、これ実は動きません。エラーが出ます。

“`py
>>> list = [“Apple”, “Orange”, “Grape”]
>>> tuple = (“Peach”, “Strawberry”)
>>> list.append(list(tuple))
“`

“`py
Traceback (most rece

元記事を表示

機械学習時に使えそうな画像自動収集パッケージ「icrawler」(0.6.3)の紹介

画像を使った深層学習で面倒な画像集めを行うパッケージの紹介。

検索エンジンから画像を収集したり、画像投稿SNSや、webページからの画像をまとめて自動でDLできる

googleの画像検索エンジンの仕様変更に伴ってgoogle用の関数はまだ使えない様子
当記事投稿(2020-10-10)の4日前にもgoogleクローラーの修正が行われていたので、いずれ改善するのではないでしょうか。

#検索エンジンからのダウンロード

bing,baiduからのダウンロード

“`python
from icrawler.builtin import BaiduImageCrawler, BingImageCrawler, GoogleImageCrawler

bing_crawler = BingImageCrawler(downloader_threads=4,storage={‘root_dir’: ‘C:\\Users\\Desktop\\0\\your_dir’})
bing_crawler.crawl(keyword=’cat’, filters=None, offset=

元記事を表示

openpyxlのオフラインインストール手順

やったのでメモ。

# 前提条件
– Windows 10 64bit
– Python 3.8.0

# 必要なもの
[pypi.org](https://pypi.org/ )から以下の最新版を事前にダウンロードしておく

| 名前 | 形式 | 備考 |
|—|—|—|
|openpyxl | .whl ||
|jdcal | .whl | openpyxlに必要。|
|et_xmlfile | setup.py | openpyxlに必要。tar.gz形式のみダウンロードできるので解凍しておく|

# インストール
“`PowerShell
py -m pip install .\jdcal-1.4.1-py2.py3-none-any.whl # py -mを先頭に置くことでpipにPATHが通っていない場合でもpip叩けるようになる
python .\dist\et_xmlfile-1.0.1\setup.py install –user # user指定しないとカレントディレクトリにインストールされてしまう
py -m pip install .\op

元記事を表示

kabuステーション®API – PUSH API用にPythonラッパーをアップデートした

# 概要

[python-kabusapi](https://github.com/shirasublue/python-kabusapi) という [kabuステーションAPI用Pythonラッパーを作成した](https://qiita.com/shirasublue/items/16ff9d1fea54b0ef648e)が、REST APIのみの対応であり、PUSH API によるwebsocket配信には未対応であった。

そのため、「[kabuステーション®APIのWebsocketをPythonで受ける](https://qiita.com/shirasublue/items/222c2bc7dbf284d24878)」のようなコードを書く必要があったが、初心者にとって [asyncio](https://docs.python.org/ja/3.8/library/asyncio.html) 等の概念が煩雑であるため、そのあたりを排除できるよう、ライブラリをアップデートした。

# 環境

– Windows 10
– Python 3.8.5 ( Microsoft

元記事を表示

Python初心者向け。Collectionというプログラミング言語の一般用語を知らないと混乱するかも。

#概要
Python初心者向け。Collectionというプログラミング言語の一般用語を知らないと混乱するかも。
自分がそれに該当したので、そのことを記事にする。

#Collectionというプログラミング言語の一般用語

引用: https://en.wikipedia.org/wiki/Collection_(abstract_data_type)

>In computer science, a collection or container is a grouping of some variable number of data items (possibly zero) that have some shared significance to the problem being solved and need to be operated upon together in some controlled fashion. Generally, the data items will be of the same type or, in languages support

元記事を表示

Python.orgのglossaryは、口調(書きっぷり)が微妙だが。。。端的に表現されている。ちょっと、意識できていない情報を添えてくれている。

#概要
**Python.orgのglossary**

https://docs.python.org/ja/3/glossary.html

は、口調(書きっぷり)が微妙だが。。。端的に表現されている。**ちょっと、意識できていない情報を添えてくれている。**
面白いので、情報共有。

#例
##package

(引用:https://docs.python.org/ja/3/glossary.html)

>(パッケージ) サブモジュールや再帰的にサブパッケージを含むことの出来る module のことです。専門的には、パッケージは \_\_path\_\_ 属性を持つ Python オブジェクトです。

##object

(引用:https://docs.python.org/ja/3/glossary.html)

>(オブジェクト) 状態 (属性や値) と定義された振る舞い (メソッド) をもつ全てのデータ。もしくは、全ての 新スタイルクラス の究極の基底クラスのこと。

##slice

(引用:https://docs.python.org/ja/3/glossa

元記事を表示

Python、コロン(:)を使わずにスライスする。a.__getitem__(slice(3,5))。

#概要
Pythonにて、コロン(:)を使わずにスライスする方法に辿りついたので、情報共有。
深い意味はありません。
あまり、めぐり合うことがないと思ったので、単なる情報として。

#Python、コロン(:)を使わずにスライスする。やり方。

“`
>>>
>>> a = [10,20,30,40,50,60,70]
>>> a.__getitem__(slice(3,5))
[40, 50]
>>>
“`

スライスも**\_\_getitem\_\_**です。
**slice(3,5)**という書き方、あまり出会わないかも。

#まとめ
特にありません。
別のことを検討していて、出会ったので、記事にしました。
コメントなどあれば、お願いします。
**この記事のレベルは、さすがに知ってたという方は、
コメント欄のほうを。。。御覧あれ(他力っ)**

元記事を表示

【Udemy Python3入門+応用】  66. 独自例外の作成

**※この記事はUdemyの
「[現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル](https://www.udemy.com/course/python-beginner/ “現役シリコンバレーエンジニアが教えるPython3入門+応用+アメリカのシリコンバレー流コードスタイル”)」
の講座を受講した上での、自分用の授業ノートです。
講師の[酒井潤](https://twitter.com/sakaijun “酒井潤”)さんから許可をいただいた上で公開しています。**

##■独自例外の作成
####◆raise
“`python
raise IndexError(‘test error’)
“`
“`:result
Traceback (most recent call last):
File “/~~~”, line 1, in
raise IndexError(‘test error’)
IndexError: test error
“`
`raise` を使うことで、指定したエラー

元記事を表示

OTHERカテゴリの最新記事