- 1. Pythonで複数入力(無限入力)を実行する方法
- 2. PythonでDependency Injectionを実装する
- 3. pyenvとvenvを使って簡単にプロジェクト専用の環境構築をする
- 4. MediaPipeを使ってリアルタイムでの手の座標取得をしてみた
- 5. Pythonでインスタンスを比較するために__eq__を実装するときの注意点
- 6. pythonでDataFrameを処理するときに使う式
- 7. 認証用クラスベースビュー、汎用クラスベースビューのフォームがformで受け取れる理由
- 8. 「新・明解Pythonで学ぶアルゴリズムとデータ構造」で勉強日記#17
- 9. Chalice on Local
- 10. Pythonで最速のULIDライブラリを作った話(C++拡張)
- 11. ブラウザ起動モジュールを呼び出そうとしてハマったはなし
- 12. pip3 install torchがなぜか失敗する問題を解決した時の備忘録
- 13. Python リスト内にある重複している数字を取り除き、並べるプログラム
- 14. ITの力で情報を収集・分析してシーバスを釣りたい #1
- 15. pythonとOSCでVRChatのエモートを操作する
- 16. エスケープシーケンス \newline バックスラッシュと改行文字の無視ってなに?
- 17. PowerBI: Python Visual を使った箱ひげ
- 18. 1台のPCから2台のDOBOTを切り替えながら制御する
- 19. pandasのread_csvでフォルダ内のcsvを読み込む方法
- 20. Google API の Admin SDK をサービスアカウントで利用する
Pythonで複数入力(無限入力)を実行する方法
“`python:test.py
for l in sys.stdin:
lines.append(l.rstrip(‘\r\n’))
“`上記のようなコードでは、
“`
python test.py
“`
のように実行しても無限に入力を受け付けてしまい、最後まで実行できませんでした。解決策は下記の通りです。
“`
echo “test1.txt” “text2.txt” | python test.py
“`参考:https://stackoverflow.com/questions/43554363/how-to-run-code-with-sys-stdin-as-input-on-multiple-text-files
PythonでDependency Injectionを実装する
備忘録としてDependency Injectionの基礎知識とPythonでの実装方法を整理します。
## 環境
– Python 3.8.10### DIとは?
“` Dependency Injection“` の略です。具体的に言うと、クラスAで利用するインスタンスをクラスAの内部で生成するのではなく、抽象に依存させて外部から渡すことです。
サンプルコードを見てみましょう。
#### 悪い例
“`main.py
class Cat():
def __init__(self, name: str):
self.name = namedef cry(self):
print(f'{self.name} cry meow meow.’)class A():
cat1 = Cat(“ハチワレ”)
def action(self):
self.cat1.cry()if __name__ == “__main__”:
a = A()
pyenvとvenvを使って簡単にプロジェクト専用の環境構築をする
Pythonのパッケージを使いたいが、自分が使っているPythonのバージョンと互換性がなかったり、手持ちのパッケージの新しい/古いバージョンに依存していたりと色々と面倒な思いをすることは往々にしてある。そこで
– Pythonのバージョンを自由に切り替えられるようにpyenvを
– Pythonパッケージのバージョンを自由に切り替えられるようにvenvを使う。
# pyenvのインストール
まずインストールする。Macならhomebrewで入れれば良い。
“`bash
brew install pyenv
“`MacでなくLinuxとかなら
“`bash
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
“`で入れる。
“`bash
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init –path)”
eval “$(pyenv init -)”
“`を実行しておいて
MediaPipeを使ってリアルタイムでの手の座標取得をしてみた
# はじめに
前回、[MediaPipe](https://google.github.io/mediapipe/)を用いて[静止画から手の座標取得を行うという記事](https://qiita.com/h-ueno2/items/b8dd54b396add5c3b12a)を投稿しました。
ありがたい事にカメラからリアルタイムでの座標取得を行いたいというコメントを頂きましたので、公式ドキュメントに[記載のサンプル](https://google.github.io/mediapipe/solutions/hands#python-solution-api)とほぼほぼ似たような内容になりますが、投稿したいと思います。# やること
– PCカメラで取得中の映像に対してのリアルタイムでの手の座標取得
– 座標を描画した画像の表示# コード
とりあえずコード全体を記載します。
“`python
import cv2
import numpy as np
import mediapipe as mpmp_drawing = mp.solutions.drawing_util
Pythonでインスタンスを比較するために__eq__を実装するときの注意点
# 概要
**Python**でインスタンスを比較するとき、**\_\_eq\_\_**メソッドを使いたいことがある。
独自の方法で複数のインスタンスが**同じ**か確認したいためだ。ただ、この**\_\_eq\_\_**メソッドをオーバーライドした時は、同時に**\_\_hash\_\_**メソッドについても考える必要がある。
**\_\_eq\_\_**をオーバーライドすると、デフォルトでは**\_\_hash\_\_**が**None**を返すためだ。もし、**\_\_eq\_\_**メソッドをオーバーライドしたオブジェクトを**ディクショナリのキー**や**セット**で使うときなど(※)は**\_\_hash\_\_**メソッドもオーバーライドする。
**※ハッシュ可能オブジェクトの場合**# \_\_eq\_\_メソッドをオーバーライドしない場合
“`python:example_not_override.py
class TestNotEq:
def __init__(self):
self.a = “a”test_not_e
pythonでDataFrameを処理するときに使う式
毎回データフレームを編集するとき、同じようなことをやっているのに毎回忘れてしまっている気がするので、使えそうなものを自分用にメモしておく
“`python
# 必要ライブラリのimport
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as snsdf_titanic = sns.load_dataset(“titanic”)
# 項目名の日本語化
columns_t = [‘生存’, ‘等室’, ‘性別’, ‘年齢’, ‘兄弟配偶者数’,
‘両親子供数’, ‘料金’, ‘乗船港コード’, ‘等室名’,
‘男女子供’, ‘成人男子’, ‘デッキ’, ‘乗船港’, ‘生存可否’, ‘独身’]
df_titanic.columns = columns_t
df_titanic.head()
“`
![image.png](https://qiita-image-store.s3.ap-northeas
認証用クラスベースビュー、汎用クラスベースビューのフォームがformで受け取れる理由
#内容
Djangoでログイン処理を簡潔に実装するためのクラスベースビューであるLoginView(認証用クラスベースビュー)において、HTMLへフォームを表示させるときのformの正体を教えていただいたためメモします。AuthenticatedFormを継承している他の汎用クラスベースビューでも同様だと思います。#form が現れる例
ログイン画面の作成を想定し、以下のようなurl.pyを記述しました。“`Python:url.py
from django.urls import path
from django.contrib.auth.views import LoginView,LogoutViewurlpatterns = [
path(‘login/’,LoginView.as_view(
redirect_authenticated_user=True,
template_name=’accounts/login.html’
),name=’login’),
]
“`
このとき、Djangoが自動でロ
「新・明解Pythonで学ぶアルゴリズムとデータ構造」で勉強日記#17
【出典】[「新・明解Pythonで学ぶアルゴリズムとデータ構造」](https://www.amazon.co.jp/%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0-%E6%96%B0%E3%83%BB%E6%98%8E%E8%A7%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%9F%B4%E7%94%B0%E6%9C%9B%E6%B4%8B/dp/4815603197/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1BG3JS7CKMZA0&keywords=Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%82%A2%E3%83%AB%
Chalice on Local
## この記事の目的
この記事の目的は、AWS製のサーバーレスフレームワークChaliceとDynamoDBを組み合わせて利用する手順を個人的なメモとして記すことです。[前回](https://qiita.com/akiraabe/items/f10aad4b500770ee327c)の内容を補完する意味で**ローカルでの実行**に特化しています。
以下の内容を含みます。
* Chalice, DynamoDBLocalを用いてローカルマシンで利用します
* ローカル環境でのIDEを利用したデバッグ
* docker-composeを利用して、DynamoDBLocalを起動します## 前提事項
以下のインストールについては済んでいるものとします。
* Python3
* chalice
* docker-compose:::details ちなみに、私の環境は以下のようになっています。(2022/1/24時点)
– Python 3.8.9 (Pipenv利用)
– chalice 1.26.4
– AWS-CLI 2.4.11
– docer-compose 2.1.
Pythonで最速のULIDライブラリを作った話(C++拡張)
# TL;DR
卍爆速卍なPythonのULIDライブラリ”[fast_ulid](https://github.com/nagataaaas/fast-ulid)”を作った
使い方は[ここ](https://github.com/nagataaaas/fast-ulid#installation)# ULIDとは
みなさんは**ULID**をご存知でしょうか?
ULIDはUUIDの代替となるべく策定されたもので– UUIDと128ビット互換
– 1ミリ秒ごとに1.21e24のユニークなULIDを作成できる
– 辞書順にソート可能
– 36文字のUUIDに対して、26文字でエンコードされる
– Crockford’s base32という、可読性の高いエンコード方式
– ケースインセンシティブ
– 特殊文字を使わないので、URLセーフ
– 単調増加なバイト列(正しい生成順にソートされる)というものです。上と被る部分もありますが、現状最新とされる**UUID4**は
– 文字効率が悪い(128bitを36文字で表す)
– ソート不可能ということで、少々使い勝手が悪いよう
ブラウザ起動モジュールを呼び出そうとしてハマったはなし
python
Seleniumを使ったブラウザ操作をよく使用するので、立ち上げ部分をモジュールとして保存。他のファイルから呼び出し使おうとしたところハマったので備忘録として。
結論として、pythonの各種ライブラリが保管されているsite-packagesに、作成したモジュールのパスを記載したテキストを.pthとして保存したところ、スクリプトからモジュールを呼び出し、ブラウザを起動することができた。
pip3 install torchがなぜか失敗する問題を解決した時の備忘録
ある日`pip3 install torch`するもなぜか失敗する
“`bash
$ pip3 install torch
Defaulting to user installation because normal site-packages is not writeable
Collecting torch
Downloading torch-1.10.2-cp39-cp39-manylinux1_x86_64.whl (881.9 MB)
Killed
$ python -c “import torch”
Traceback (most recent call last):
File ““, line 1, in
ModuleNotFoundError: No module named ‘torch’
“`色々調べるも分からない。
もしかして最新のpytorchのバージョンが上がってずれてるのかも?と思いサイトを確認すると以下で`1.10`になっているようだった。> [https://pytorch.org/blog/pyt
Python リスト内にある重複している数字を取り除き、並べるプログラム
どうも、学生エンジニアのirohasです。
本日は、暇つぶしにPythonのプログラムを1つしてみたので記事にしてみました。やることはタイトルの通り、与えられたリスト内の数値を重複している数字を取り除いて出力させるというものです。
まず、与えられているリストは以下の通りです。
“`
old_list = [1,1,1,2,2,3,3,3,4,5,5,6,7,7,7,8,8,9,10,10]
“`このリストを下記のような出力にするのが目標です。
“`
[1,2,3,4,5,6,7,8,9,10]
“`僕がこの問題に対して作成したコードは以下になります。
“`python:remove.py
old_list = [1,1,1,2,2,3,3,3,4,5,5,6,7,7,7,8,8,9,10,10]def remove():
new_list = []
for item in old_list:
if item not in new_list:
new_list.append(item)
ITの力で情報を収集・分析してシーバスを釣りたい #1
##はじめに
昨年末からシーバス釣りにはまり、割と情報の収集と分析が必要なゲームと気づきました。
せっかくIT関係のSEなのでスマートに情報を収集・分析して釣果をあげたいと思いました。
ついでにDXにもはまり中なのでそのお勉強も兼ねます。
![IMG_20220116_172421.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/43851/afe819f1-8585-8dde-f3bf-56ba45f31f16.png)##情報の収集
使うツールは以下。– [Twitter](https://twitter.com/tenpa_ozisan)
– [IFTTT(イフト)](https://ifttt.com/)
– GoogleスプレッドシートまずはTwitter上で**「シーバス釣り」**を検索キーワードとしてIFTTTで収集し、Googleスプレッドシートに落とし込みます。このあたりはGUIですべて完結するので簡単です。
![step0.png](https://qiita-i
pythonとOSCでVRChatのエモートを操作する
## はじめに
この記事はVRChatとOSCを使って、とりあえず何か動くものを作りたい!と思ってる人向けの記事です。pythonのスクリプトを実行することにより、OSCを通してVRChatのアバターにエモートの動きをさせることが出来ます。
手元に必要なのは **VRChat** と **python** だけです・・・!
## OSCとは
Open Sound Controlというプロトコルなのですが・・・プロトコルって何?ってなりますよね。プロトコルは何かと通信するためのルールや決まりごとみたいなものです。データをVRChatに送信する場合、OSCが指定するフォーマットで送る必要があります。プログラム内にライブラリを導入すれば、送信したいデータを割とらくにOSCのフォーマットに変換してくれます。
## もうちょっと簡単に説明してくれ
python単体だとVRChatと会話が難しいから、OSC用のライブラリとタッグを組んで、ライブラリに色々と通訳してもらいます。通訳のアウトプットはVRChatが理解出来るようなフォーマット(OSC)です。下記がそのイメージ図。
![db
エスケープシーケンス \newline バックスラッシュと改行文字の無視ってなに?
下記のサイトをみて、自分の中でも、あれ?と、こんがらかってしまったので、図解してメモを残します。
# [Pythonでの\ newlineエスケープシーケンスとはどういう意味ですか?](https://stackoverflow.com/questions/48693600/what-does-the-newline-escape-sequence-mean-in-python)
> \newlinePythonドキュメントのエスケープシーケンスのリストでシーケンスを見つけました。それはどのように、そして何のために使われるのだろうか。少なくとも私の通訳では、これは次のように解釈されているようです’\n’ + ‘ewline’。
“`python
>>> print(‘\newline’)ewline
“`—
# [字句解析](https://docs.python.org/ja/3/reference/lexical_analysis.html)
| エスケープシーケンス | 意味 | 注釈 |
|:———–:|:————:|:-
PowerBI: Python Visual を使った箱ひげ
# 背景
箱ひげが必要になった
その選択肢を考えると以下で– [追加のビジュアル](https://appsource.microsoft.com/en-us/marketplace/apps?product=power-bi-visuals)
– カスタムビジュアル作る
– Python
– RPython は勉強中でもあったので物は試しとやってみた。
# 概要
– 利用例二点
– [簡単な利用例](#簡単な利用例)
– [グルーピングしながら渡す例](#グルーピングしながら渡す例)
– [躓きと対処](#躓きポイントとか)# SampleData
|height|age|binary|
|-|-|-|
|172|25|動物|
|170|22|人|
|169|42|動物|
|175|49|人|
|184|38|人|
|163|29|人|
|174|35|動物|
|172|22|人|
|189|21|人|
|179|43|人|
|171|44|動物|# 簡単な利用例
1. age, height を渡したら
![利用例1引数.png](htt
1台のPCから2台のDOBOTを切り替えながら制御する
# やりたいこと
1台のPCから2台のDOBOT Magicianを制御したいと思います。
DobotStudioでは、プログラムを実行しながら接続するDOBOTを切り替えられないので、PythonやC言語等、各種プログラミング言語を使用します。公式に提供されているAPIには、DOBOTを複数台同時に接続する方法がありませんので、今回は都度接続するDOBOTを切り替えながら制御したいと思います。
# 動作
– 1台目のDOBOTでペンを掴み、2台目のDOBOTに渡せる位置に移動します。
pandasのread_csvでフォルダ内のcsvを読み込む方法
# 解決したい事象
pandasのread_csvメソッドで、フォルダ内のcsvを選択したい# 方法
絶対パスを書いても、エラーが発生するため、pyファイルがある階層以降のパスを記載する。“`python
#間違い
train = pd.read_csv(“/Hoge/hogehouse-prices-advanced-regression-techniques/train.csv”)#正解
train = pd.read_csv(“house-prices-advanced-regression-techniques/train.csv”)“`
はじめにスラッシュ(/)を使わない点もポイント。
Google API の Admin SDK をサービスアカウントで利用する
Web UIが無く(≒ユーザーに承認させる画面が出せない)、API キーでの認証にもしたくなかったので、サービスアカウントが使いたい。
ただ、サービスアカウントを使った実装方法はあまり無かったので認証情報の作成手順と併せてまとめました。
PythonでGoogleグループからメンバーのメールアドレス一覧を取得する例は末項に載せていますのでそちらをご参照ください。# 前提
設定は全て、組織の管理者ユーザー※にて作業しています。
※「ユーザー」>「管理者ロールと権限」にて、全ての組織部門の「特権管理者(Google Apps Administrator Seed Role)」ロールを割り当て済みユーザー
※権限を持ち合わせていないユーザーでも「ドメイン全体の委任を管理」以外の設定は可能です。# 設定手順
ブラウザにて[Google Cloud Platform](https://console.developers.google.com/)へアクセスし、ログイン## プロジェクト作成
画面上部プラットフォームバーのプロジェクト選択からウィンドウを開き、「新しいプロジェクト」ボタ