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

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

HDF5へ様々なファイルの格納

##はじめに
様々な実験データファイルをまとめる必要があり、階層構造をもつHDF形式でのファイルの格納方法について備忘録として記載します。

####参考情報
・HDF一般
[Pythonを使いHDFファイルの階層構造を把握してデータを読み込む](https://qiita.com/skotaro/items/873507dc8f8f967bbc03)
[意外と奥が深い、HDFの世界(Python・h5py入門)](https://qiita.com/simonritchie/items/23db8b4cb5c590924d95)

・text、jsonファイルの保存の参考
[HDF5のpython実装で文字列データを圧縮して保存するだけ](https://qiita.com/sage-git/items/1d17d4058eca6a6a4826)
[How to use HDF5 files in Python](https://www.pythonforthelab.com/blog/how-to-use-hdf5-files-in-python/)

・excelファイルの保存

元記事を表示

cmd上からお気に入りのフォルダを開くスクリプト

コマンドプロンプト上から、お気に入りのフォルダを開く簡易スクリプトを作成しました

# 必要要件
・windows(10で動作確認)
・python3系
・pyperclip

# 使い方
以下のような形で使用できます
(argparseほぼベタ貼りです)

“`
usage: eopen.py [-h] [-o] [-c] [-l] [-a] [-d] [favorite name]

arguments:
-h, –help ヘルプ表示
-o, –open 対象のお気に入り登録名でオープン(デフォルト)
-c, –cmd 対象のお気に入り登録名でコマンドラインをオープン
-l, –clip 対象のお気に入り登録名でクリップボードにペースト
-a, –add 対象のお気に入り登録名で、クリップボードのテキストをファイルパスとして登録(または上書き)
-d, –delete 対象のお気に入り登録名で削除
“`

バッチやエイリアス登録等で使うのが主かと思います

## 例

元記事を表示

【鬼滅の刃で学ぶDjango】順参照・逆参照のクエリセット取得方法

# Django使ってる?
PythonのWebフレームワークでお馴染みのDjango。『いつ、どのサイトにどんなツールが導入されたかが分かるSimilarTech』によれば、シェアでは殆どの国でRuby On Railsに劣るものの、トレンドはDjangoが右肩上がりの模様。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286189/db203405-770d-4477-7529-640873782b69.png)
> [Django VS Ruby On Rails](https://www.similartech.com/compare/django-vs-ruby-on-rails)

さて、本記事の対象者はDjangoをある程度使った事がある人、MTV(あるいはMVC)モデルが多少なりとも分かる人向けの内容となっております。まだ触ったことないよって人は、[公式サイト](https://docs.djangoproject.com/ja/3.0/intro/)のチュートリアルか

元記事を表示

LINE BOT(オウム返し)を作る

#LINEBOTで単純なオウム返しを、Heroku、Flask、line-bot-sdkで作成した。丸2日かかり詰まった点も多いのでメモも含めて共有。

・Mac
・Python

#(1)環境整備、ディレクトリ構成
デスクトップに、ディレクトリtest_linebotを作成。
ディレクトリ内に仮想環境を構築して起動。

“`
python3 -m venv .
source bin/activate
“`

最終的なディレクトリ構成は以下の通り

“`
test_linebot
├main.py
├runtime.txt
├Procfile
└requirements.txt
“`

#(2)必要なフレームワークをインストール

“`
pip install flask
pip install gunicorn
pip install line-bot-sdk
“`

#(3)main.pyを作成

“`.py:main.py

from flask import Flask, request, abort
from linebot import (
LineB

元記事を表示

PythonでのDB接続管理の良さそうな方法の紹介

# はじめに
とあるOSSのコードを眺めてて、良さそうなのがあったのでそれの紹介をば。

# コード
とあるOSSというのは、[Apache Airflow](https://github.com/apache/airflow)。
この中で、[airflow/utils/session.py](https://github.com/apache/airflow/blob/master/airflow/utils/session.py) がいい感じでした。

## 簡単な説明

まずは、 `session.py` から。

“`python
import contextlib
from functools import wraps

from airflow import settings

# contextlib.contextmanager を指定すると with を使って close を自動でやってくれる
@contextlib.contextmanager
def create_session():
“””
Contextmanager that will c

元記事を表示

【Python3】リクルートカードの支払いが来月幾らか確認しよう【Selenium】

#クレジットカードの来月の支払いの確認が面倒くさい!
タイトルの通り、わたしは__来月の支払いを確認するのを怠ったばっかりに__、
__何となくリボ払いにして借金が減った気がした錯覚に陥りました。__
という事で、今回は前回と同じパターンで、

__スクリプトでサクッと支払情報をサクッと貰ってきましょう。__

例によってあなたがPCを起動した時に走らせるcronを使えば、全てのクレジットカードの支払を管理する事が出来ます。
カード会社毎に支払日が違うので、後々グラフ化も考えています。

__グラフ化や、他の会社のクレジットカードの請求情報の取得解説の要望があったら言って下さい。__

##注意するべき点
__ 今回は特にないです。

OS:Windows10
GoogleChrome バージョン: 70.0.3538.110(Official Build) (64 ビット)
Python:3.70
Selenium Webdriver:この記事を書いた時点で最新のもの
chromedriver.exe:この記事を書いた時点で最新のもの

※スクリプトと同じフォルダに’chromedr

元記事を表示

Tensorflow 2.~ でCould not create cudnn handle: CUDNN_STATUS_INTERNAL_ERRORの対処

## 環境

### バージョン

– Tensorflow: 2.1.0
– Ubuntu: 18.04
– python: 3.6.8
– CUDA: 10.0.130
– cuDNN: 7.6.5

## 原因

TensorflowのGPUメモリ割り当ての問題。だと思う

## 対処

### 以下のコードでメモリ割り当てを制限している場合

“`python
gpus = tf.config.experimental.list_physical_devices(‘GPU’)
if gpus:
# Restrict TensorFlow to only use the first GPU
try:
tf.config.experimental.set_visible_devices(gpus[0], ‘GPU’)
logical_gpus = tf.config.experimental.list_logical_devices(‘GPU’)
print(len(gpus), “Physical GPUs,”, len(logical_gpus

元記事を表示

Python:正規表現での置換例(自分用メモ)

自分向けのメモです。
正規表現での置換のサンプルコードがぱっと見つかるものがなかったので、主に自分用にメモしています。

“`python
import re

text = “子供用Bagや女性用バックなど様々なバッグを取り揃えています”
text_mod = re.sub(‘バック|バッグ’, “Bag”, text)
print (text_mod)

## > 結果
## 子供用Bagや女性用Bagなど様々なBagを取り揃えています
“`

随時更新していきます。

元記事を表示

Pythonのdatetimeについて、iso形式との変換をしてみた

Pythonを使用していて、ISO形式での時間の扱いについて少し調べたのでまとめておきます。
APIを利用していたところISO形式での時間が取得でき、それをdatetimeに変換するために調べたりしていました。
もっと簡単に変換できる方法などあれば教えてもらえると嬉しいです。

“` python
## 自作関数 : iso -> datetime の変換
import datetime
import pytz

def isoptime(isoformat_datetime):
## JSTで表示したいならコメントを外す
dt = datetime.datetime.strptime(isoformat_datetime, ‘%Y-%m-%dT%H:%M:%SZ’)
#dt = pytz.utc.localize(dt).astimezone(pytz.timezone(“Asia/Tokyo”))
return dt
“`
この関数を利用してisoとdatetimeの変換を以下のように行なっていました。

“`python
## iso形式と

元記事を表示

Pukiwikiのエンコードされた添付ファイルの名前をデコードする方法1

##はじめに
今回、研究室内で使用しているPukiwikiのデータをお引越しさせる必要性がありました。
特に、添付ファイルには重要な資料がたくさんあるので、それをお引越しさせないとドエライ事になります。

今回の記事では、Pukiwikiのエンコードされた添付ファイルの名前をデコードする方法のアイデアをひとつ紹介します。

##Pukiwikiの添付ファイルの保存場所
PukiwikiはPHPのコードで動いていて、どこかにPukiwiki自体のコードがおいてあるはずです。
添付ファイルは、Pukiwikiのコードのattachという名前のディレクトリ下に保存されます。

## 問題
attachディレクトリに全ての添付ファイルが保存されており、そのディレクトリ内にあるデータをどこかで保存すればお引越し完了、のつもりでした。
しかし、全てのファイルが16進数表記でかつ拡張子無しという無残な姿になっていました。
このままデータを吸い出しても、(そのままでは)全く意味がありません。

**16進数表記にエンコードされたファイル名をデコードしてあげる必要があります**

## 解決方法
htt

元記事を表示

covid19-hyogo向けのデータを取得して生成するまで完全自動化したお話

#もくじ
[1.はじまり](#はじまり)
[2.私が作ったスクリプト](#私が作ったスクリプト)
[3.兵庫県のデータ公開状況](#兵庫県のデータ公開状況)
[4.データ形式について](#データ形式について)
[5.データ生成の自動化](データ生成の自動化)
[6.苦労した点等](#苦労した点等)
[7.最後に](#最後に)

##兵庫県 新型コロナウイルスまとめサイト
兵庫県にお住まいの方は、ぜひこれから参考にしていただければ幸いです。(これからもUIの改善等アップデートをしていく所存です。)
https://stop-covid19-hyogo.org

#はじまり
東京都が[新型コロナウイルス対策サイト](https://stopcovid19.metro.tokyo.lg.jp/)をオープンソースで立ち上げた話は有名です。そして、Twitterを見ていると、三重県の高専生が4人でサイトを立ち上げたという話を見て、私も自分の住む兵庫県向けにサイトを立ち上げてみよう…と思っていたら既に他の方が作成を開始していたので、コントリビュートを始めたのがきっかけです。そして、Web開発経

元記事を表示

Click(Python) のサブコマンドをファイルを分割して実装する

Python の Click、結構便利で簡単に CLI ツールが作れて LGTM ですね(← 使い方あってる?)。
その Click を使ってサブコマンドを実装するときに、ファイルを分割して実装するのに少々苦戦したので、そのことについて適当な例を使って実装の流れを書いてみようと思う。
間違いの指摘や、ここもっとこうした方がいいよ等の助言がありましたら、コメント頂けると幸いです。

ちなみに、サブコマンドを複数ファイルに分割して実装しようと思ったのは、「関心事は分離してそれぞれのファイルに分けた方が良いかなぁ」と思ったからである。

## TL;DR

“`py:subcmd.py
@click.command()
def cmd():
pass
“`

“`py:cmd.py
from subcmd import cmd as subcmd

@click.group()
def cmd():
pass

cmd.add_command(subcmd)
“`

## バージョン

* Python: 3.8.0
* Click: 7.0

## サンプルとして実

元記事を表示

Splunk カスタムサーチコマンド (custom search command) 作成 ― はじめの一歩 ―

Splunk SDK を使用して、カスタムサーチコマンド (Custom Search Command) を作成します。

ドキュメントがあるといえばあるのですが、なかなかわかりずらいので、参照先と手順をまとめておきます。
はじめの一歩として、”hello, world”[^1] を出力するカスタムサーチコマンド `generatehello` を作成[^2]します。

[^1]: Kernighan & Ritchie への敬意をこめて、小文字で。
[^2]: run を用いてスクリプトを呼び出すのではなく、Splunk SDK のフレームワークを利用した、いわば Native なコマンドです。run コマンドを用いたスクリプトをカスタムサーチコマンドとして作成する方法は、「 [カスタムサーチコマンドの作り方(Splunk) – Qiita](https://qiita.com/myogada/items/c5a2985882c4b3f30e31)」が参考になると思います。

:point_up_tone3: 少し古いのですが、内容は今でも通用する Splunk 公式ブログ “[Bu

元記事を表示

Chalice を使って AWS Lambda 上に LINE Bot 用の Webhook を作成する

# はじめに

掲題通りです。
多くの記事では LINE Bot の応答を返すサーバーは Heroku の上に構築されていますが、API Gateway + AWS Lambda を利用してサンプルを構築してみたのでそのメモになります。

## コンテンツ

以下の方法で作成した Chalice の line-bot プロジェクト内で動作を確認。
LINEの設定などで分からない点は、末尾の参考URLなどを参照ください。

“`bash
$ pipenv install –python 3.7
$ pipenv install chalice line-bot-api
$ pipenv run chalice new-project line-api
“`

ここで作成された `app.py` , `requirements.txt` , `.chalice/config.json` を以下の通り修正します。
なお、ソースコードは [line-bot-apiのGithub](https://github.com/line/line-bot-sdk-python) から持ってきた「

元記事を表示

[Python]台風の経路をfoliumを使って地図上に書いてみた

# 記事の内容
子供の頃に台風ってこんなに頻繁に発生してたっけ?とか10月ぐらいに台風って日本に来てたっけ?という漠然とした疑問がありました。
気象庁が公開している台風に関するデータを使ってこのあたりの疑問を解決出来たらないいなと思い、色々やってみました。

# データ取得元
政府が運営しているデータカタログサイトから取得しました。

[データカタログサイト](https://www.data.go.jp/)

[気象予報_天気予報・台風の資料](https://www.data.go.jp/data/dataset/mlit_20140919_0747)
このページの「台風位置表のCSVデータ」を使用します。

この記事ではリンク先に掲載されている2001年から2019年までのCSVデータを使用しました。

# foliumを使って台風の経路を地図上に書いてみる
## 準備
CSVデータのヘッダーが日本語だったので英語に変えました。だいぶ適当です

~~~
year,month,day,hour(UTC),typhoon_no,typhoon_name,rank,latitude,l

元記事を表示

AWS Lambda と連携するマイクロフレームワーク Chalice を使ってみる

# はじめに

Serverless アプリケーションのフレームワークとしては [Serverless Framework](https://serverless.com/) が有名だが、以下の点で個人的なユースケースにちょっと合わないところを感じていた。

– Python で開発したい!
– Serverless Framework 自体は様々な言語の開発にも対応しているが、Node.js/npm ベースであり、これらの知識が多少要求される
– たくさんの言語で対応できているので、悪く言うと情報が散らかっていて情報収集結果の読み替えが少し大変
– JSの場合の解決策は提示されているが、これのPythonの場合は…と考える時間がそこそこあるという経験談から
– マルチプラットフォーム対応は必要ない
– AWS 特化さえしてくれてれば今回は問題ない

そこで改めて情報を調べていると [Chalice](https://github.com/aws/chalice) というマイクロフレームワークがAWS公式のGithubリポジトリから出ているこ

元記事を表示

[Python]Classの第一引数はなぜselfなの?

## はじめに
Pythonでクラスを定義する際,第一引数の命名が “`self“` なのはなぜだろうとずっと疑問に思ったので,調べて書き残しときます.

## 第一引数self以外ではダメ?
結論からするとダメです.[PEP8](https://pep8-ja.readthedocs.io/ja/latest/index.html#id36)(1)に “`インスタンスメソッドのはじめの引数の名前は常に self を使ってください。“`
と定義されています.ただし,動作上なら “`self“` 以外でもきちんと動きます.例は[ここ](https://www.geeksforgeeks.org/self-in-python-class/)(2)を参考にしてます.

“`python
class Hoge():
def __init__(self_inplace_hoge, string):
self_inplace_hoge.string = string
print(‘self_inplace_hoge: ‘, self_inpla

元記事を表示

Pythonの文字列から時間計算

## 2時刻(HH:MM:SS)の差分を計算するメソッド

“`python

# 時間計測関数
def time2second(timestr):
timelist = timestr.split(“:”)
timelist = [int(i) for i in timelist]
second = timelist[0]*3600 + timelist[1]*60 + timelist[2]
return second

def calc_timediff(t1, t2):
# 秒数算出
t1second = time2second(t1)
t2second = time2second(t2)
# 秒数差算出
timediff = abs(t2second – t1second)
return timediff

t1 = ’11:27:48′ # 11時間27分48秒
t2 = ’11:37:04′ # 11時間37分4秒

diffsecond = calc_timediff(t1, t2)
tp

元記事を表示

IBM Watson Speech to Text API を使ってみた (Python)

## 経緯
PythonからIBMのAI、Watsonに音声データを送信して音声認識( Speech to Text )をしていきます。
API 初心者向けです。

## 環境
Macbook: MacOS Mojave
Python: Python 3.8.0

## 前提
Python インストール済
IBM Cloud アカウントを取得済 (アカウント作成は[こちら](https://www.ibm.com/watson)から。)

## インストール
ターミナル上、または python notebook 上で以下のコマンドを実行。

“`
$ pip install “watson-developer-cloud>=1.4.0”
“`

## 資格情報の確認
[IBM Cloud のサイト]((https://cloud.ibm.com/login))で Speech To Text を選択すると、マイアカウントから資格情報を確認出来るようになります。
API 鍵と URL をコピーし、以下のコード([こちらのコード](https://qiita.com/white0221

元記事を表示

トラブったときに参照した記事一覧:Pytnon編

# この記事の目的

開発時にトラブってググったけど、再発時に忘れてるということが多いのでトラブルごとに解決に役立った記事をまとめておく

## DB接続

**カーソル処理をWith句でまとめる**
参照先:[Python+MySQL でコネクションやカーソルと with 文](https://qiita.com/umezawatakeshi/items/6c3483ea0e082f2d8926)

“`python
from contextlib import closing
with closing(conn.cursor()) as cursor:
cursor.execute(“SELECT * FROM table”)
rows = cursor.fetchall()

“`

元記事を表示

OTHERカテゴリの最新記事