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

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

Switchbot 開閉センサーデータをラズパイで収集する

# どうでもいい前書き
初めて新生活始めた時にベランダの窓開けっ放しで出かけてしまったことがトラウマで今だに出かけるたびにドアの施錠が気になるんです。
~~まぁ、8階建の4階で防鳩ネットあったからそんな簡単に侵入できる環境ではないので空き巣の被害はなかったんですがね~~
そんな感じでleafee magをつけてたんですが、経年劣化(主に南側の窓に付けているので直射日光の影響をモロにうける)で買い替えを検討してたところ、[switchbotのドア開閉センサー](https://www.switchbot.jp/products/switchbot-contact-sensor)が仕様公開しているのでいろいろ出来そうだということでデータ収集をしてみました。

温湿度計のデータ収集は結構あるけど開閉センサーはないみたい・・・?

# Switchbotのデータ送信方法について
https://github.com/OpenWonderLabs/SwitchBotAPI-BLE/blob/latest/devicetypes/contactsensor.md

ここの仕様によると2つのデータ

元記事を表示

(初心者的)この /usr/bin/python3 はだれが?

小型マイコン遊び以外でも,ちょっとしたテキストデータの処理等で標準のPythonを使う場面が増えてきた。とても便利。

ふと,自分のMacを見たら,`/usr/bin/python3`があることに気づいた。おかしいな。このMacにはインストールした記憶ないのに…

(Catalina 10.15.7)

“`bash
$ which python
/usr/bin/python
$ python –version
Python 2.7.16
$ which python3
/usr/bin/python3
$ python3 –version
Python 3.8.2
$
“`

参考URL

– https://geniusium.hatenablog.com/entry/2020/05/07/004816
– https://ottan.jp/posts/2020/04/macos-catalina-python3-default/

このままこの python で pip していいのだろうか? 疑問に思い,更に調べてみると,`venv`で仮想環境を作る,という手法

元記事を表示

pythonのフックについて知ろう!

## フック(hook)について
⇒pythonの組み込みAPIは、引数に関数を受け取ることができ、「ふるまい」を定義することができる。これをフックという。pythonの関数はファーストクラスオブジェクトであり、変数と同じように関数の引数として渡すことも可能である。

具体例を出すとsortメソッドのkey関数があげられる。
~~~python:exam1.py
human_list = [‘taro’, ‘jiro’, ‘saburo’]
# 名前のスペル数によるソート
human_list.sort(key=len)

print(human_list)

>>>[‘taro’, ‘jiro’, ‘saburo’]
~~~

pythonにおけるフックの多くは定義された引数と戻り値を持っていて、状態を持たない関数です。他の言語ではフックというと抽象クラスで定義されることもある。

## 副作用とは?

defaultdictを使った例を考えてみる。
以下の例は、もともと辞書のkeyにない値を追加しようとすると’no key’が出力される。
~~~python:exam2.py
fr

元記事を表示

【AtCoder】ABC271のA,B,C,D における Python解説

ABC 271のA,B,C,D,E問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)

作者プロフィール
Atcoder :[緑 855](https://atcoder.jp/users/tsuru1471)
20221216 現在

# 目次
[はじめに](#はじめに)
[A.484558](#a484558)
[B.Maintain Multiple Sequences](#bmaintain-multiple-sequences)
[C.Man

元記事を表示

【python】勉強メモ-その5(実務で書いたコード)

### 1.はじめに
本日は、実務でのテキスト加工について書きます。

実務でログを取得し、集計を行うことになり取得したログを、集計可能な形式(CSV形式)にしなければ
ならなくなりました。

出力されたログ(r_file.log)を見ると、日時が一番上に書かれており、各メッセージの一番左にありません。
集計するためには、日時を、各メッセージの一番左に追記したCSV形式(w_file.csv)にする必要がありました。

さらに、取得したログ(r_file.log)は、200万行ある状態でした。

“`r_file.log
Tue Nov 11 00:00:00 JST 2022
12 aaa bbb cc:cc:cc:cc ddd
34 eee fff gg:gg:gg:gg hhh

Tue Nov 11 00:00:05 JST 2022
78 iii jjj kk:kk:kk:kk lll
99 mmm nnn oo:oo:oo:oo ppp

Tue Nov 11 00:00:10 JST 2022
12 qqq rrr ss:ss:ss:ss ttt
34 uuu vvv

元記事を表示

世界の天気情報を取得してTwitterにあげるようにした話②

# 前回までの流れ
・Pythonを使ってTwitterへ投稿
・OpenWeatherのAPIを使ってJSONデータを取得する

さて、前回は”tokyo”と指定して東京のデータを取得することに成功しました。

# JSONデータを見てみよう
実行すると以下のように出力されました(※2022/12/12 23:10実行)

~~~
{‘base’: ‘stations’,
‘clouds’: {‘all’: 40},
‘cod’: 200,
‘coord’: {‘lat’: 35.6762, ‘lon’: 139.6503},
‘dt’: 1670854086,
‘id’: 1862143,
‘main’: {‘feels_like’: 6.28,
‘humidity’: 62,
‘pressure’: 1021,
‘temp’: 8.43,
‘temp_max’: 10.33,
‘temp_min’: 5.35},
‘name’: ‘堀ノ内’,
‘sys’: {‘

元記事を表示

【Python】GPXファイルからXYZファイルへの変換

## はじめに

 山形大学大学院修士1年のHagianです。この記事は、[Python Advent Calendar 2022](https://qiita.com/advent-calendar/2022/python) の15日目となります。

## やりたかったこと

1. GPXファイル(GPSやGNSSの情報をXML形式で記録したもの)から緯度・経度・高さを読み込む
2. UTM(ユニバーサル横メルカトル)座標に変換する
3. 変換した座標データをXYZファイル(X, Y, Z方向の基準点からの距離をスペース区切りで記録したもの)で書き出す

## GPXとXYZについて

### ①GPX

 GPXは英語で、GPS Exchange Formatといい、アプリケーション間でGPSやGNSSの情報をやり取りするために用いられるフォーマットです。**初耳だ、何やら難しそう…** と思われる方もいらっしゃるかもしれませんが、**一言でまとめるとXML形式** です。GPXでは軌跡やルート、ポイントを記録することができます。

https://www.to

元記事を表示

【AtCoder】ABC275のA,B,C,D,E における Python解説

ABC 275 のA,B,C,D,E 問題を解くために考えたこと、ACできるPython3(PyPy3)コードを紹介します。
また今回、直接問題とは関係のない部分で筆者がひとりで考えても解決できなかった疑問点を最後に共有しています。わかる方がいらっしゃればぜひ教えてください。→ [筆者の疑問](#筆者の疑問)

この記事は @u2dayo さんの記事を参考にしています。見たことのない方はそちらもご覧ください。とても勉強になります。

また、問題の難易度を表す指標を [Atcoder Problems](https://kenkoooo.com/atcoder/#/table/tsuru1471) から引用しています。このサイトは勉強した問題を管理するのにとてもオススメです。

質問やご指摘はこちらまで
Twitter : [Waaa1471](https://twitter.com/Waaaa1471)
作者プロフィール
Atcoder :[緑 855](https://atcoder.jp/users/tsuru1471)
20221212 現在

# 目次
[はじめに](#はじめ

元記事を表示

nuxt3 & flask で webアプリ作成する際に静的ページのデータ更新がされずハマったのでメモ

## 今回の対応方法は以下
– flask の debug モードを使用して、flask の app.py の変更を認識させリロード処理を行いデータ更新を反映させる
debug の true false は必須、その上で reloader debugger を使用するか決める

“`py:flask
# 抜粋
if __name__ == ‘__main__’:
app.run(host=’0.0.0.0′, debug=True, use_reloader=True, use_debugger=False)
“`

## point
– flask 側で複数のファイルを使用していても、メインファイル、今回の場合は app.py(app = Flask(__name__)) が nuxt から API でたたかれる際に app.py が対応するが、この中でデータの更新が確認できる必要がある
以下のような形で、c.csv のデータ更新されていても機能しない。app.py の中で書いている csv の中身が変更されている時に更新が反映される

“`
※ 例
app.py
fo

元記事を表示

Neo4j + Pythonの使い方あれこれ

# はじめに
この記事は、[AMBL株式会社 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ambl-rd)の15日目の記事になります。是非、他の記事も読んで見て下さい〜:santa_tone2:

最近、業務でグラフ型DBであるNeo4jを使う機会があったのですが、筆者はグラフDBを扱うのが初めてだった事もあり、色々と四苦八苦した部分もあり…

今回の記事は、シンプルにNeo4jにPythonを用いてデータ登録するまでの流れを簡単にメモ書きしていきます。

# 環境設定
今回実装していた筆者の環境は、macOS Big Sur (version 11.6)になります。
まずは必要なツールを、ターミナル上でインストールします。

とは言っても、特にこれといって面倒な作業はありません。
下記の `homebrew` コマンドを叩けばOKです。
“`
$ brew install neo4j
“`
pythonは3.7以降のversionであれば、問題なく動きます。
今回使用するライブラリは以下の二つです

元記事を表示

【SlackBot】冬の登校時間を管理するBotを作った?

MYJLab Advent Calendar 2022、15日目の記事です!
前回は@takumiakasaka1231の[Prisma+fakerでサクッとデモデータを作る](https://qiita.com/takumiakasaka1231/items/e9a4a0854445f147dbfb)
でした!
PrismaはGraphQLと相性が良くて個人的に推せるORMなので, 勝手にテンションが上がりました?

## これは
私はよく大学に遅刻してしまうのですが, 冬は自分の意志の弱さにお外の寒さが加わり, 余計に家を出るのが遅くなってしまいます.
今回はこの課題を解決するために, 登校時間を管理してくれるマネージャーをslack botで作りました. 名前はMANEKOです?(私は犬派です)
MANEKOに期待することは以下の3つです.

– 登校予定時間を覚えていてくれる
– 登校予定時間に間に合ったら褒めてくれる
– 登校予定時間に間に合わなかった場合, みんなの前で叱ってくれる

弊ゼミでは, timesチャンネルを作っている人が何人かいて, 私もtimesチャンネルが

元記事を表示

QuickSightを使ってみました

# Introduction
本記事は、[ハンズラボ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/handslab) 15日目の記事です。

## きっかけ
AWSのQuickSightでどのようにデータが可視化されるのかに興味を抱きました。しかしハンズオンやどこかのデータを元に可視化するのは、興味を覚えませんでした。
そこで、社内Slackにおいて、どんなスタンプが使われているのかを可視化してみようと感じました。

## 結論
早速ですが、可視化してみるとこのようになりました。
縦軸はスタンプの使用数、横軸は時間軸です。
なお、プライバシーの問題があるため、どんなスタンプがあるのかを見せられません。

![slack_sticker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262742/4cd12532-0b31-4f97-8e5e-4d7f7c83b6d6.png)

申し訳ないですが、可視化されたグラフのみを紹介

元記事を表示

Android×Pythonで気圧計作ってみた

## はじめに

 山形大学大学院修士1年のHagianです。この記事は[身の回りの困りごとを楽しく解決! by Works Human Intelligence Advent Calendar 2022](https://qiita.com/advent-calendar/2022/works-hi-1)の15日目となります。

 突然ですが、私は頭痛を抱えています。月に1回程度来る偏頭痛のほかに、気圧変動(特に上昇時)によって緊張型頭痛がやってきます。前兆をつかむため、気圧を知りたいな〜と思うことがよくあります。

 しかし気圧計が手近にある場合を除いて、気圧を知ることは意外と難しいように思います。気象庁および各地の気象台では観測が行われていて、気象庁のWebサイトから知ることができますが、毎正時かつ海面更正された値であり、実測値ではありません。そこで本稿では、**スマホで手軽に気圧の実測値を得られる**ツールを作成したので紹介します。

### 困っていること

* 知りたいときに気圧を知れない
* 自分の現在地の気圧を実測値で知りたい

### 実

元記事を表示

namedtupleについて

## namedtupleについて知ろう!
参考
* [namedtupleで美しいpythonを書く!(翻訳)](https://qiita.com/Seny/items/add4d03876f505442136)
* [namedtuple ってなに?](https://python.ms/namedtuple/#_1-%E4%BD%BF%E3%81%84%E9%81%93)
* [【Python】namedtupleで名前付きタプルを使用する](https://tech.nkhn37.net/python-collections-namedtuple/)

>namedtupleとは、pythonの標準ライブラリーcollectionsモジュールからインポートできるデータ型のこと。namedtupleは第一引数にクラス名、第二引数に属性を記述し、クラスを生成して返す関数です。

## namedtupleの使い方
~~~python:exam.py
from collections import namedtuple

Human = namedtuple(‘Hum

元記事を表示

Python周りの技術について調べてみた①

# Python周りの技術について簡単に調べてまとめてみた①

# 言語Python

## 言語Pythonについて知りたいときは

https://www.python.jp/

Pythonの言語や環境構築について調べたい場合はこちら

# Webアプリ

## Pythonで汎用性のあるWebアプリを作りたいときは

https://docs.djangoproject.com/ja/

Pythonで色々な機能をもったWebアプリを作りたい場合はこちら
※フレームワーク

## Pythonで簡単にWebアプリを作りたいときは

https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/

Pythonで簡単な軽量なWebアプリを作りたい場合はこちら
※フレームワーク

## Pythonで非同期Webアプリを作りたいときは

https://www.tornadoweb.org/en/stable/

Pythonで非同期通信を使ったレスポンスが早いWebアプリを作りたい場合はこちら
※フレームワーク

# デスクトップアプ

元記事を表示

paizaラーニング「2 変数の入れ替え Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_change
#### 私の解答
“`Python3
a,b = map(int, input().split())
print(b,a)
“`
#### 解答例1
“`Python3
values = input().split()
A = int(values[0])
B = int(values[1])

tmp = A
A = B
B = tmp

print(A, B)
“`
#### 解答例2
“`Python3
A, B = map(int, input().split())

A, B = B, A
print(A, B)
“`

元記事を表示

paizaラーニング「配列の書き換え Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_rewrite
#### 私の解答
“`Python3
a, b, n = map(int, input().split())
li = [int(x) for x in input().split()]
for i in range(n):
if li[i] == a:
li[i] = b
print(li[i])
else:
print(li[i])
“`
#### 解答例1
“`Python3
values = input().split()
A = int(values[0])
B = int(values[1])
N = int(values[2])

a = [0] * N
values = input().split()
for i in range(N):
a[i] = int(values[i])

for i, ele in enumerate(a):
if e

元記事を表示

pytestでMock化されないで困った時の対処法

私の職場では主にPythonでシステム開発をしており、テストではpytestを利用する事が多いのですが、表題のようにMock化したい関数が上手くMock化出来ずに困ってしまう事があります。特に厄介なのが、Mock化されない根本原因が分からない場合は色々とソースコードを変更しながら期待する挙動になるまでトライ&エラーを繰り返すしかないという点で、毎回この問題が解決(大抵の場合は根本原因が分からないまま)するまでにとても時間がかかっていました。

流石にこの状況はまずいと思い色々調べた結果、この問題を再現性のある形で解決する方法を見つける事が出来たので、その内容を記事にまとめてみました。
※本記事は、下記の環境で動作確認を実施しています。
Python 3.9.11
pytest 7.1.3
pytest-mock 3.10.0

今回の検証の為に、下記の構成のプログラムを用意しました。

“`cronsole
.
├── src
│   ├── __init__.py
│   ├── functions.py
│   └── main.py
└── test
├──

元記事を表示

MQTT で受信したデータをファイルに書き出す

## プログラム

“`py:subscribe_log.py
#! /usr/bin/python
#
# subscribe_log.py
#
# Dec/14/2022
#
# ——————————————————————
import sys
import json
from time import sleep
import paho.mqtt.client as mqtt
import time

# ——————————————————————
def log_write_proc(json_str):
# print(json_str)
unit_aa = json.loads(json_str)
#
print(unit_aa)
#
fp_out = open(file_log,mode=’a’, encoding=’utf-8′)
fp_out.write(json_str

元記事を表示

JETSON AGX ORINにtensorflowをインストールする

# JETSON AGX ORINのセットアップについて

JETSONT AGX ORINを使用するにはまずJETPACKをセットアップする必要があります。

[JETPACKのセットアップ方法](https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit)

この作業が完了の後にtensorflowをインストールします。

# tensorflowのインストール方法

通常のUbuntuと異なるインストール方法になります。NVIDIA公式サイトを参考にします。

“`bash:bash
sudo apt-get update
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran

sudo apt-get install python3-pip
sudo pip3 install -U p

元記事を表示

OTHERカテゴリの最新記事