Python関連のことを調べてみた2022年03月12日

Python関連のことを調べてみた2022年03月12日

ThreadでFlaskを起動する

## やりたい事

– WebUI用のFlaskとAPI用のFlaskを一つのアプリケーション内で実現したい。
– プロセスを2つ立ち上げる方法もあるが、サブとなるAPI用をThreadで起動したい。

“`
$ curl localhost:5001/
This is WebUI
$ curl localhost:5002/api/
This is api
“`

## ファイル構成

“`
+ app.py
└ api
└ views.py
“`

## コード

“`app.py
import threading
from flask import Flask

class APIThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.daemon = True

def run(self):
api_app = Flask(__name__)
from api.views

元記事を表示

UbuntuにPython3.7インストール (without sudo)

管理者権限がない環境でPython3.7(+jupyter)をインストールするのに意外と苦労したので、自分用にメモを残しておきます.
OS: Ubuntu18.04LS
# その1
$HOME/local/python/にインストールすると仮定しています.makeのjオプションはCPUのコア数に応じて変えると良いです.
“`terminal
wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
tar -zxvf Python-3.7.0.tar.gz
cd Python-3.7.0
mkdir ~/local/python
./configure –prefix=$HOME/local/python –enable-optimizations
make -j 10
make altinstall
“`
これだと
ModuleNotFoundError: No module named ‘_ctypes’
というエラーが出ました.どうやらlibffiというものが必要らしいです.

# その2
libffiをイン

元記事を表示

色情報の特徴量をRGBで表現する

# はじめに
色情報が”Green”や”White”などの文字列で表現された特徴量があるとする。
これを特徴量としてベクトル変換する際、以下のような方法が考えられる。
1. one-hot変換する
2. いくつかの色カテゴリに分類する。

問題点として1の手法では次元が多くなってしまい、2の方法では手動でカテゴリを適切に設定する必要がある。

この記事では、色情報を[webcolors](https://github.com/ubernostrum/webcolors)というライブラリを使ってRGB変換し、それぞれを比例尺度の特徴量とすることを提案する。

表で表すと以下のようなテーブルがあった際に
| |color |
|—|—|
|1 |white |
|2 |blue |
|3 |red |
|4 |green |

以下に変換する
| |red |green |blue |
|—|—|—|—|
|1 |255 |255|255|
|2 |0 |0|0|
|3 |255 | 192 | 203
|4 |25

元記事を表示

NFCで少し気になったこと

# 個人的に少し気になったこと
***
最近、NFCの機能を使ったシステムを作ろうとしていたのですが、その過程で少し気になったことができてしまったのでここに書き残しておきます。
***
## 検証環境
>___・使用したNFCカードリーダー___
>>PaSoRi_RC-S330

>___・使用したNFCカード___
>>1.Aime(セガのゲーム機用のモノ)Type2Tag
>>2.ANAPASSPORT(BANDAIのゲーム機用のモノ)Type2Tag
>>3.ICOCA(近畿鉄道株式会社が提供する交通系ICカード)Type3Tag

>___・NFCの読み取りを行った環境___
>>・Windows10上にあるAnacondaを用いた仮想環境
>>・モジュールとしてNFCPYを利用
>>・どのカードが読み取れたかが分かればいいのでカード内のTagを表示させる機能以外は着いていないコード
>>・Pythonのバージョンは3.9.7
***
## 実際に使用したコード

~~~Python
import nfc

clf = nfc.ContactlessFrontend(‘usb

元記事を表示

Windows環境のPythonでN-gram生成ツール SRILM を使う方法

# SRILMのインストール手順
### 1.SRILMのインストール
今回はCygwin環境にSRILMをインストールします。
Cygwinの設定は[前回の記事(Windows環境のPythonで形態素解析器 — ChaSen — を使う方法)](https://qiita.com/phi934/items/2fd43a3ea3e51dde10e3)を参照

SRILMのダウンロードは[**こちら**](http://www.speech.sri.com/projects/srilm/download.html)から(今回は srilm-1.7.3.tar.gz を使用しています。)

Cygwin64の直下に「srilm」というフォルダを作成
“`
cd /
mkdir srilm
cd srilm
“`

作成したフォルダにダウンロードしたsrilm-1.7.3.tar.gzをコピーする。
そして、作成したフォルダ内でsrilm-1.7.3.tar.gzを解凍する。
“`
tar zxvf srilm-1.7.3.tar.gz
“`

解凍したフォルダ内の「Makef

元記事を表示

BatfishでNW障害時の影響分析を行う②

# 1. はじめに
前回の記事では、Configファイルをインプットに、ネットワークConfig解析ツール「Batfish」で正常時の確認を行いました。
[BatfishでNW障害時の影響分析を行う①](https://qiita.com/kitara/items/3969a9c7223ec2e91d29)

本記事では筐体障害、リンク障害時の確認と、正常時・障害時を比較した影響分析を行ってみたいと思います。

# 2. 筐体障害時の確認

### 2-1. 筐体障害発生
※前回の記事の「3. Batfishのセットアップ」まで終わっている前提とします。
正常時のスナップショット`test_snapshot`をフォークし、`iosvl2-0`筐体障害発生時のスナップショット`fail_access`を作成します。引数`deactivate_nodes`には障害機器のホスト名`iosvl2-0`を指定します。

“`python:snippet1
FAIL_ACCESS_SNAPSHOT_NAME = “fail_access”
bf.fork_snapshot(BASE_SNAPSH

元記事を表示

PyCharmのTerminalで仮想環境が自動起動せずに躓いた話

PyCharmのTerminalから`pip`したのに何故かグローバルの`site-package`に追加されてしまう……
PyCharmのTerminalから`PyInstaller`してもパッケージを読み込んでくれない……
何かおかしいと感じつつも原因を特定できずにいたのですが、
**そもそも仮想環境が起動できていませんでした。**
今回は仮想環境が起動できなかった原因とその対策について考えてみます。

# 更新履歴
2022/03/11 : 初版

# 環境
* Windows10
* Python3.10
* PyCharm Community Edition 2021.2.2

# 1. PyCharmでの仮想環境

通常Pythonで仮想環境を扱う場合`venv`など色々なコマンドを使用して構築する訳ですが、PyCharmではそれらを自動で設定してくれます。
プロジェクトを作成するときに作成される`venv`フォルダがそれです。

“`:プロジェクトフォルダ構成例
myproject
├ myproj

元記事を表示

SeleniumをEXEで動かす

記載日:2022/3/11
Selenium、Web Driver、Browser(Chrome)を1つにまとめたEXEを作りたい機会があったので、忘れないように記載します。
(セキュリティ面を考えるとChromeは最新バージョンに近い方が良いので、EXEはある程度の頻度で更新した方が良いかと思います。)

#### 目標
EXE1つでスクレイピングを実行できるようにすること。
なお作業はWindowsで実施する。
(Pyinstallerはコンバータではないので、Linuxで作業するとEXEを出力できない。)

#### バージョン情報
・OS:Windows11
・Python:3.9.6
・pip:21.1.3
・Pyinstaller:4.8
・Selenium:4.1.0

#### 流れ
1.Selenium、Pyinstallerのインストール
2.Chromeをプロジェクトの任意のフォルダへコピー。
3.Web Driverをダウンロードし、プロジェクトの任意のフォルダへコピー。
4.PythonでSelenium実行ファイル作成。
5.PyinstallerでEXE生

元記事を表示

Yolo V5のアノテーションtxtファイルの覚書

– 座標は画像の左上が(0,0)で右下が(1,1)

“`txt:[ 画像ファイル名(拡張子なし)].txt
<ボックスの中心x> <ボックスの中心y> <ボックスの幅x> <ボックスの高さy>
“`

“`yaml:data.yaml
train: data/train/images #学習用画像のパス
val: data/valid/images #検証用画像のパス

nc: 3 #ラベルの数
names: [ ‘<ラベル名>‘, ‘<ラベル名>‘, ‘<ラベル名>‘ ]
“`

元記事を表示

WindowsでPythonをはじめるための開発環境準備

# はじめに
Pythonの開発環境構築から基本的な知識をまとめてみました。
Pythonはとても人気があり需要が高い言語、習得できればきっと役に立ちます。
まずは、Pythonでお約束のHello worldを表示させましょう。

# Pythonの実行環境
今回はWindowsで開発環境を作りますが、PythonのプログラムはWindows以外のプラットフォームでも実行できます。
実際に、Windowsで開発してLinuxで定期実行させたりしています。
* Windows
* macOS
* Linux/Unix
* iOS/iPadOS
* Android
* その他

# 無料で開発環境を準備する
### Python3 (実行環境)
* [ここから]( https://pythonlinks.python.jp/ja/index.html )Python3のどれかをダウンロードしてインストール
* 今回はPython3.7を使用してますが、3.8でも3.9でも良いでしょう
* 複数のバージョンのPython環境が同居可能
### Visual Studio Code (エディ

元記事を表示

discord.pyでボイスチャンネルにいるメンバーを取得する

ボイスチャンネルにいるメンバーを取得する方法について色々とたらい回しにされたので参考までに書いておきます。

~~~
vch = client.get_channel(チャンネルid)
~~~
としているとき

~~~
vch.voice_states.keys()
~~~

でメンバーの一覧を取得できます。

もちろん、

~~~
for member in vch.voice_states.keys():
~~~
とすることで、メンバー各々に対しての処理を行えます。

作成したdiscordbotから抜粋です。

“`python:例
vch = client.get_channel(vid)
memlist = []
if vch is not None:
if len(vch.voice_states.keys()) == 0:
return
for member in vch.voice_states.keys():
memlist.appen

元記事を表示

RaspberyPi Zero WHとSunlightセンサで紫外線などを測定してみた

# はじめに
こんにちは。
RaspberyPi(ラズパイ)をIoTデバイスとして、Webアプリとの連携を目指して少しづつWebアプリとラズパイでの開発を進めています。今回はラズパイにSunlight(太陽光)センサを接続し、サンプルスクリプトを走らせて、測定をするまでの記事になります。このセンサは紫外線(紫外線指数)、可視光、赤外線を測定できるものです。

# なぜ書いたか
主に学習記録用ですが、GroveのSunlightセンサを使う予定の方の参考にもなればと思います。

# 準備したもの
[以前の記事](https://qiita.com/kosukein38/items/02aa3819e13dc35e9e0d)にも記載していましたが、Sunlightセンサを追加して、再掲します。

また、以下の表では、ラズパイにディスプレイやキーボード、USBハブを接続して直接操作することを前提に物を揃えましたが、今回VNC(Virtual Network Computing)を利用して、MacBookからリモートデスクトップ接続しました。(表中品名の※印はVNC接続の場合に不要になるもので

元記事を表示

Webスクレイピングでオリコンから好きなアーティストの最新10ニュースを取り出す

学生の選んだ題材が,Webスクレイピングでオリコンから好きなアーティストの最新10ニュースを取り出すというものだったので,Pythonを使って作ってみたものは次のようなものでした.

“`
import re
import requests
from bs4 import BeautifulSoup

url = ‘https://www.oricon.co.jp/search/result.php?types=article&search_string=Aimer’
#オリコンの検索ボックスに「Aimer」と入れた時の記事タイトル検索画面で,記事が21件並ぶページのリンクを変数urlに代入
res = requests.get(url)
#変数urlに代入されているリンクからHTMLデータをダウンロード
res.text
#テキスト化
soup = BeautifulSoup(res.text, “html.parser”)
#解析器(パーサー)に通している
titles = soup.find_all(‘h4’)
#タイトルに当たる部分は「h4」というHTMLのタグ(最小見

元記事を表示

YahooNewsが毎朝届くLINEBOT

# はじめに
日々の学習での気づきや制作物があればアウトプットしようと思い始めてみました。
Qiita初心者なので見辛い点があると思いますがご了承ください。
pythonの勉強も3ヶ月程なので冗長なコードがありますが、暖かく見守ってください(笑)

# 作成の経緯
定期的にLINEがお知らせをしてくれるBOTを作りたいなと思い立った。
以前スクレイピングの練習で、YahooNewsサイトのデータを取得していたため、それを利用して作成に至った。

# 機能紹介
毎朝7時になると注目のニュースが送られてくる。
line_img.PNG
このように笑顔の素敵な男の子が注目のニュースを発信してくれます。

# コード解説
コード全文はGitHubに公開しています。
https://github.com/motty00/y

元記事を表示

BatfishでNW障害時の影響分析を行う①

# 1. はじめに
前回の記事で、NW機器のリンク・筐体障害発生と断時間計測を自動化する例をご紹介しました。
[pyATS/GenieでNW障害テストを自動化する](https://qiita.com/kitara/items/43a93e479e0bbe86f6ed)

ラボ環境では何度でも自由に障害テスト出来ますが、本番環境リリース後はそうは行かないと思います。
また、新規セグメント構築やルーティング・ACL設定追加を積み重ねていく中で設定ミスが生じ、障害発生時の系切替やサイト切替で問題が発覚するケースもあると思います。

今回ご紹介するOSSのネットワークConfig解析ツール「Batfish」では、実機のConfigファイルをインプットとして、インターフェース、ルーティング(BGP、OSPF、EIGRP、Static等)、ACL設定等の解析を行い、ある機器間が通信可能かシミュレート出来ます。
さらに、Batfish上で疑似的にリンク・筐体障害を発生させ、障害時の疎通性や通信経路も確認可能です。

これ以降で、実際に障害時の影響分析を行う例をメモしておきます。

# 2. ネッ

元記事を表示

オブジェクト指向を用いた線形常微分方程式の数値計算(Python)2-1:差分法基底クラス

# 1. 概要
 この記事では、常微分方程式の差分法について説明し、対応する基底クラスの実装を行います。前回の記事は[こちら](https://qiita.com/itotomball/items/8c25ffa93070603af794)です。

# 2. 差分法
### 2.1 線形常微分方程式
 前回の内容をおさらいします。以下の線形常微分方程式を対象としています。
$$ f^{(N)} + c_{N-1} f^{(N-1)} + \ldots + c_1 f^{(1)} + c_0 f = r. \tag{1}$$
$\phi_k=f^{(k)}$ $(k=0,\ldots,N-1)$ と置くことにより、一階連立微分方程式に書き直すことができます。
“`math
\left\{
\begin{align}
&\phi_0^\prime = \phi_1, \\
&\phi_1^\prime = \phi_2, \\
&\qquad\vdots \\
&\phi_{N-1}^\prime = r – (c_0\phi_0 + \ldots +c_{N-1}\phi_{N-1})

元記事を表示

Pythonでtifから複数枚の画像を保存する方法

TIFF形式に含まれる複数の画像を一枚一枚取り出して保存する方法を扱います.

“`python
import cv2
from tifffile import TiffFile
import numpy as np

tifpath = “./hoge.tif” # tifファイルのパス
jpgpath = “./folder/” # jpgファイルを保存したいフォルダのパス

with TiffFile(tifpath) as tif:
mmap = tif.asarray(out=”memmap”)

# 最初の画像から順番に保存
for i in range(len(mmap)):
img = np.asarray(mmap[i])
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#4ケタの0埋めでファイル名をつける
cv2.imwrite(“{0:s}{1:04d}.jpg”.format(jpgpath, i+1),img)
“`

以上です.

元記事を表示

データの監視をして品質の低下を防ぎたい

DMMデータ周りの部に所属している[yuua](https://qiita.com/yuua0216)です
データはときにイレギュラーなデータが紛れ込んでいたり、何かしらの改修をした際に一部データの構造が崩れてしまったり
といった事態が `たまによくある` と思います。
そういいった事態をできる限り防ぎ、分析者が使用するデータの品質を担保するためにどういったことをやっているのかまとめたいと思います。

# データの特徴を把握する
データの品質監視をするためにまず、データの特徴や構造を把握するため、EDA分析を行いました

EDA分析の詳細には触れませんが…
+ EDA分析(探索的データ分析)とはデータの特徴を探求し、構造をようやくすることを目的としたもの

EDA分析は `deequ` による `profile` や`pandas` を使った `pandas-profiling` を使用して行っております。

https://github.com/awslabs/deequ

https://github.com/ydataai/pandas-profiling

どちらもDat

元記事を表示

StreamlitとFastAPIを使ってメモアプリを作ってみた

## はじめに

今回Pythonのライブラリ`Streamlit`とWebフレームワーク`FastAPI`を使って簡単なメモアプリを作ってみました。即席でWebアプリケーションを作るのに有用かつ、お手軽に作成できたので紹介させてください。

### 目標
メモ登録・一覧画面を`Streamlit`、`FastAPI`を使用して作成していきます。
イメージとして下記2画面です。
**メモ登録画面**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1178305/c96eba2c-4317-2d38-ddc5-19c342fb835c.png)
**メモ一覧画面**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1178305/04749070-db46-e126-9eb4-7fe40df76bd1.png)

## Streamlit

[Streamlit](https://strea

元記事を表示

Windows10で、Pythonの64bit環境と32bit環境を共存させて、CaboChaを使えるようにしてみた

# わたしの環境
* Windows 10 64bit
* Python 3.9.7 64bit
* Jupyter Notebook

# 概要
元々Pythonは64bit環境だけを使っていたのですが、
CaboChaを使うには32bit環境が必要ということで、
試行錯誤で両者を共存させてみました。
大きな流れは以下の通りです。(私はこれだけのことに半日ほどかかりました。。。)

①Baseである64bit環境とは別に、32bitの仮想環境を作成する。
②32bit版のMeCabをインストール,Pythonで使えるようにする。
③32bit版のCaboChaをインストール,Pythonで使えるようにする。
④Base環境(64bit)と新しく作った32bit環境をJupyter Notebookから,
 用途に応じて選択できるようにする。

# 背景

最近自然言語処理を勉強し始め、あの有名な[言語処理100ノック 2020(Rev2)](https://nlp100.github.io/ja/)に挑戦しています。
色々な方の回答例も参考にしながら、なんとか第5章の

元記事を表示

OTHERカテゴリの最新記事