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

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

PythonのEnumで0オリジンのインデックスを採番する

## 背景
Pythonでは`0`が`false`に判断されてしまうことから、
通常のEnumでは`1オリジン`で採番されますが、
どうしても`0オリジン`にしたい場合の簡単な実装サンプルです。

## 環境
python: 3.7.7

## 実装サンプル
“`python:enum_0_origin.py
from enum import Enum

IDX = Enum(‘IDX’, [‘A’, ‘B’, ‘C’], start=0)
print(IDX.A.value)
# 0
print(IDX.B.value)
# 1
print(IDX.C.value)
# 2
“`

以上、終わり。

元記事を表示

Cloud Pak for Data (Watson Studio)でpandasデータをExcel形式でデータ資産に保存する

project_libを使った分析プロジェクトのデータ資産へのファイル保存方法は[別の記事](https://qiita.com/ttsuzuku/items/eac3e4bedc020da93bc1#%E3%83%87%E3%83%BC%E3%82%BF%E8%B3%87%E7%94%A3%E3%81%B8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98-%E5%88%86%E6%9E%90%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88)に書きましたが、Excel形式で保存するには少しコツが必要でした。
いろいろ調べていたら、stackoverflowの[こちらの記事](https://stackoverflow.com/questions/56538138/saving-dataframe-as-excel-file-into-ibm-cloud-object-storage-with-python)が有効でした。

実際にやってみた例を記載し

元記事を表示

Cloud Pak for Dataで関数をデプロイする

Cloud Pak for Data (以下CP4D)で、Pythonの関数をデプロイすることが可能です。用途は主にモデル実行の前後処理で、try&exceptのエラー処理も組み込めますし、なにより複数のモデルを呼び出す(使い分ける)ことが可能になります。

CP4D v2.5 製品マニュアルより抜粋
https://www.ibm.com/support/knowledgecenter/ja/SSQNUZ_2.5.0/wsj/analyze-data/ml-deploy-functions_local.html

> Python 関数は、モデルのデプロイと同じ方法で Watson Machine Learning にデプロイできます。ご使用のツールとアプリケーションは、Watson Machine Learning Python クライアントまたは REST API を使用して、デプロイ済みのモデルにデータを送信するのと同じ方法で、デプロイ済みの関数にデータを送信できます。関数をデプロイすることで、詳細 (資格情報など) を非表示にしたり、データをモデルに渡す前に前処理したり、エラ

元記事を表示

✨Pythonで簡単☆死後経過時間推定✨

# もし、あなたの目の前に亡骸があったら?
![](http://blog-imgs-46.fc2.com/k/o/n/konanhitosuzi/20131216231144a8f.jpg)(引用;名探偵コナン「甘く冷たい宅配便」)
コナン君が遺体を見つけた時、かなり最初の段階で死後経過時間について考えますよね?死亡推定時刻が分かれば大きく容疑者を絞り込むことができますしね\(^o^)/
そこで今回は死後経過時間について詳しい求め方を紹介します!

# 例題
室温16℃に設定された冷蔵車に男性の遺体があった。男性の体重は86kg、コナン君が遺体の直腸内温度を計ったところ、27℃であった。男性の死後経過時間を求めよ。

# ニュートンの冷却の法則
まず、簡略化した事象を考えてみましょう。コップに入れられた熱いコーヒーが周囲の温度(空気)によって冷まされる問題を考えます。この時、次の「ニュートンの冷却の法則」が近似的に成り立つと言われています。
ニュートンの冷却の法則を表す微分方程式は

$\frac{dT}{dt} = -γ(T – T_s)$ (1)

で表されます。ここで、各文字

元記事を表示

pythonのrelative_to()で相対パスを指定しようとしたらはまった

# 概要
絶対パスから相対パスを取得するために以下のようなコードを実行した

“`python

import pathlib

p = pathlib.Path()
file_path = ‘image-db’
file_path_rel = p.cwd().relative_to(file_path)
“`

エラー

“`bash

ValueError: ‘/directory/of/python’ does not start with ‘image-db’
“`

relative_to()の中身がカレントディレクトリより外にあると動かないらしい.

# 対策
os.path.reipath(‘行先’, ‘起点’)を使えば複雑な相対パスも取得できる.

“`python
file_path_rel = os.path.relpath(file_path, os.getcwd())
“`

# 参考サイト
https://hibiki-press.tech/python/os_path_abspath/1021

元記事を表示

【Python】Pythonを始めるにはまずはPythonをしっかり使えるようにしないとね

# 結論

MacにPythonをインストールして、Pythonを使えるようにする。
MacはPython2系が元々インストールされているが今回はPython3系をインストールする。

## 背景

Pythonを始めるにはまずはPythonを使えるようにしなければならない。プログラミングを始めるにあたって一番はじめにつまずくのが環境構築。これからPythonを始めたいと思っている人の参考になるように手順を書きたいと思ったため。初心者向けのため仮想環境にインストールするなど複雑なことは考えない。

## 全体の流れ

① コマンド操作を覚える
② Pythonをインストールする

## コマンド操作を覚える

Pythonをインストールする前にMacのコマンド操作を覚えること。
これが少しできるだけでプログラミングも楽しくなる。

“`
ls    # フォルダ内を表示する
ls -a  # 隠しファイルも含めファイルやフォルダを全て表示する
cd    # フォルダを移動する
pwd   # フォルダのパスを表示する
touch  # 空のファイルを作る
mkdir  # フォル

元記事を表示

PythonでのCloud Pak for Dataのオブジェクト操作例 (WML client, project_lib)

# はじめに
Cloud Pak for Data (以下CP4D)の分析プロジェクトでNotebook (Jupyter Notebook)でモデルを作る場合、データの取り込みやモデルの格納、作ったモデルのデプロイなどを行うためのライブラリとしてwatson-machine-learning-client-V4 (以下WML client)[^1]とproject_lib[^2]があります。どちらもCP4DのNotebookの標準Python環境にデフォルトで入ってます。
この記事では、これらのライブラリの具体的な使い方を紹介します。

[^1]: 詳細は、WML client リファレンスガイド [watson-machine-learning-client(V4)](https://wml-api-pyclient-dev-v4.mybluemix.net/#) および、CP4D v2.5 製品マニュアル [Python クライアントを使用したデプロイ](https://www.ibm.com/support/knowledgecenter/ja/SSQNUZ_2.5.0/wsj

元記事を表示

chrome driverのバージョンエラー”Message: session not created: This version of ChromeDriver only supports Chrome version 81″について

環境:
mac OS Catalina
バージョン.10.15.4

chrome driverを毎日稼働させいますが、
ある日から突然下記のエラーメッセージが出て稼働しない現象が発生しました。

“`zsh
Message: session not created: This version of ChromeDriver only supports Chrome version 81
“`

原因として、
chrome driverが最近アップデートされversion.83に自動更新されていたことでした。

対応策として、
chromeのバージョンをダウングレードするということで、
アプリケーションをversion.81を再度インストールしましたが
自動更新され同じことの繰り返しの結果になりました。

なので、chromedriver側を変更することにしました。
しかし、一筋縄ではなかったので忘備録として記載します。

コマンドで、下記を入力してインストールし
version.83に更新されたことを確認しましたが改善されず。
“`zsh
 pip3 install –u

元記事を表示

Pythonを使い始める

#Pythonエントリークローラー
これは私の**最初**のpythonプロジェクトです、ここで共有してください〜

– 現在、大まかな機能として、ユーザーが映画のチケットや電車のチケットの購入などのイベントを受け取る製品を開発しています。 次に、アプリはSMSを読み取り、SMSを解析し、時刻と場所を取得し、バックグラウンドで自動的にメモを作成して、イベントの1時間前にユーザーに通知します
– このプロジェクトは `python3` のバージョンを使用します

“`ruby:init.py

# -*- coding: UTF-8 -*-

# import need manager module
import MongoUtil
import FileUtil
import conf_dev
import conf_test
import scratch_airport_name
import scratch_flight_number
import scratch_movie_name
import scratch_train_number

元記事を表示

VSCodeでDjangoを使用した仮想環境を構築する(Windows)

あらかじめPythonとVSCodeをダウンロードしておく

#事前準備
##仮想環境を作成する
仮想環境を作成するツールをダウンロードする

“`cmd.exe
C:¥Users>pip install virtualenv
“`

仮想環境を作成する。今回はsrc_pyという環境をD直下に作成する
D:¥src_py

仮想環境用のフォルダを作成する

“`cmd.exe
C:¥Users>D:
D:¥>mkdir src_py
D:¥>cd D:¥src_py
“`
以下のコマンドを実行して仮想環境にする

“`cmd.exe
D:¥>cd D:¥src_py
D:¥src_py>python -m venv venv
“`

現在のフォルダ構成はこうなっている
src_py
└─venv

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

まず、activateで仮想環境を動作させる
(venv) D:¥src_py>と表示されたら成功

“`cmd.exe
D:¥src_py>D:¥src_py¥venv¥Scripts¥activate
(venv) D:¥src_py>

元記事を表示

ゼロから始めるLeetCode Day39「494. Target Sum」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day38「208. Implement Trie (Prefix Tree)」](https://qiita.com/KueharX/items/c4dc14c167a4a179ba63)

基本的にeasyのacceptanceが高い順から解

元記事を表示

pyautoguiのlocateOnScreen()がマルチディスプレイ非対応な理由

## 概要
pyautoguiのlocateOnScreen()がデュアルディスプレイ環境にも関わらず一画面分でしか探索ができなかったのでわかったところまでを備忘録として記します。

## 結論
PILのimageGrab.grab()がデュアルディスプレイに対応していない
pyautgiuのマルチモニター非対応の解決策を書いている人がいました(未検証)→https://github.com/python-pillow/Pillow/issues/1547#issuecomment-185815425

## 問題発生時の環境
Winodws10 home
python 3.6.4
pyautogui 0.9.50
pyscreeze 0.1.26
Pillow 5.0.0

## pyautogui.locateOnScreen()の動作
この関数はpayautoguiの`__init__.py`の212行目で以下のように定義されています。

“`payautogui/__init__.py
def locateOnScreen(*args, **kwargs):

元記事を表示

Python3 を子供に教えるためにパスワード生成機を作ってみた(オマケ)

# マイナンバーカードの暗証番号変えるのが流行ってるみたいなのでパスワード生成機を作ってみた

 本当は仕事で任意の桁数、1000個以上のパスワードが必要になったからなんですけどね・・・
折角なので、これも Python のお勉強と以下のような仕様でパスワード生成機を作ってみました。

1. 任意の桁数のパスワード
2. 英語の小文字を混ぜる(か選択できる)
3. 英語の大文字を混ぜる(か選択できる)
4. 記号を混ぜる(か選択できる)
5. 3文字連続した文字ははじく(123 , abc , 987 , XYZ , 121 などはダメ!)
6. 上記ルールのパスワードを指定数分作成する
7. 全部ファイルに出力する

 大したことはやってないですね。自分的には `check_err3()` があんまり綺麗じゃないので他にやりようは無いんかな〜などと思ってますが。

 「子供に教える」という観点では、オセロよりこっちのプログラムの方が難解ですね。なぜなら文字コードという概念が出てくるからです。「君が今観てる画面に表示されている A は16進数の 0x41 なんですよ」なんて言っても理解

元記事を表示

Python3 を子供に教えるためにオセロを作ってみた(6)最終回

# オセロクラスについて解説していきましょう その3

## 「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」関数
 さてさて、最も難解かもしれませんが解説していきます。
 これから説明するオセロクラスの関数 `ot_next_onepeace()` は、**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**という機能の関数です。
 この言葉がとても重要になる関数です。もう1度言いますね。
 この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけです。
 仮にオセロ盤のマス目が100x100の盤だったとしても、この関数が実行するのは**「関数に渡された X と Y の隣のコマと、その隣のコマを調べる」**だけなのです。

### なぜなら「自分が自分を呼び出す関数(再帰関数)」だから!

 少なからずコマを置けると判断した場合、ひっくり返せる方角を全てひっくり返していかないとなりません。そのためには、8方向に対してひっくり返しができるかどうか?、どこまでひっくり返せるか?を考えなければなりませんよね。

元記事を表示

Pythonで文字列を変換(a -> b)する場合、if文と辞書型どちらを使うのが速いのか

# 背景とやったこと
GCPのCloud Functionsで「りんご」なら「果物」、「いちご」なら「野菜」、のように毎回入力をペアとなる単語に変換したかったのですが、
**if文でゴリゴリ変換**するのと**辞書型の対応表を用意して変換**するのどちらが早いのか疑問に思ったので試してみました。
注)なお自分の場合はコールドスタートになることが多いので、辞書型生成も含めた所要時間を計算しています

## 結論
**毎回辞書型の読み込みが発生する場合(AWSのLambdaやGCPのCloud Functionsのコールドスタート時など)は**
if文の方が速い。

keyが5文字の場合
![fig2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304608/a580dc25-7c51-4f71-1692-ab48a72799d2.png)

keyが10文字の場合
![fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

processingのコードを送信したらgifかpngで出力してくれるslackbotを作った話

# はじめに
深夜テンションで一気に書ききったのでたくさん修正するかもしれません。
この記事ではslackbotを起動に漕ぎ着けるまでの解説を行います。デプロイして運用!とかは他の記事を見ながら頑張っていただけたら…
この記事で使用してるコードは[こちら](https://github.com/kota-shiokara/processing-slackbot)に上げてます。

なお、この記事は様々な説明を省略してたりするのでご了承ください。

# 本文
## 環境など(筆者の環境なのであくまでも目安に)
– macOS Catalina 10.15.4
– Slack
– processing-java
– Python 3.7.4(Python3系なら多分大丈夫だと思います)
– [slackbot](https://github.com/lins05/slackbot) 0.5.6
– [Pillow](https://pillow.readthedocs.io/en/stable/) 7.1.2

pipでslackbot、Pillowライブラリをインストールしてお

元記事を表示

ラズベリーパイZERO-WHでカメラ画像をGoogleDriveにアップロードする(python+pydrive)

#初めに
ラズベリーパイ(Raspberry Pi Zero WH)を用いて、監視カメラを作成する前に、撮影した画像などをネットワーク上に保存できる環境を構築します。
指定したファイルをGoogleドライブにUploadする方法はネット上にいくつもありましたが、監視カメラ用の画像のアップロードとなると、たくさんの画像を上げることになります。また参照を容易にするためにも、指定した場所に日付などのフォルダーを作成して格納する必要があります。このほか実際には、通信エラーなどでうまくアップロードできない場合もあるので、指定ディレクトリのファイルをまとめて行うようにしています。

# 利用しているハードウエア
* Raspberry Pi Zero WH
* Raspberry Zero V2 Camera (今回のプログラムには不要)
* microSD カード(32GB)

# 利用しているソフトウエア
* Linux raspberrypi 5.4.35+ #1314 Fri May 1 17:36:08 BST 2020 armv6l GNU/Linux
* Python 3.7.3
*

元記事を表示

ゼロから始めるLeetCode Day38「208. Implement Trie (Prefix Tree)」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day37「105. Construct Binary Tree from Preorder and Inorder Traversal」
](https://qiita.com/KueharX/items/c5442e4cd3baa6bb1ce

元記事を表示

Python 備忘録(個人的ブックマーク)

多分、ゴミ投稿… :sweat: 逐次、更新。

# 覚書
## 商と余り

– [Pythonのdivmodで割り算の商と余りを同時に取得 | note.nkmk.me](https://note.nkmk.me/python-divmod-quotient-remainder/)

“`python
q = 10 // 3 # 商
mod = 10 % 3 # 余り
q, mod = divmod(10, 3) # 商と余りを同時に
“`

## swap

– [Pythonで変数やリストの値を入れ替え(交換・並べ替え) | note.nkmk.me]()

“`python
a, b = b, a
“`

もう tmp 要らない…。

## ユークリッドの互除法 Python 版

– [拡張ユークリッドの互除法 〜 一次不定方程式 ax + by = c の解き方 〜 – Qiita](https://qiita.com/drken/items/b97ff231e43bce50199a)

“`python
def gcd(a, n):
if

元記事を表示

how can I convert pdf to image using pdf2image in python on Mac OS X?

I want to convert pdf to image using pdf2image in python on Mac OS X.

“`
from pdf2image.exceptions import (
PDFInfoNotInstalledError,
PDFPageCountError,
PDFSyntaxError
)
# define pdf path
pdf_path = “./pdf_file/ooo.pdf”

# convert pdf to image(1200dpi)
images = convert_from_path(str(pdf_path), 1200)
# save image files one by one
image_dir = “./image_file”
for i, image in enumerate(images):
file_name = pdfpath + “{:02d}”.format(i + 1) + “.jpeg”
image_path = image_dir / file_

元記事を表示

OTHERカテゴリの最新記事