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

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

Pythonで指定した範囲のスクリーンショットを撮る

# 概要
みんな大好き大乱闘スマッシュブラザーズ(以下スマブラ)!!
私事ながら,スマブラ配信をしています.[チャンネル登録お願いします!](https://www.youtube.com/channel/UCKys_FIMcKfIn5L4HOyy0vQ)
スマブラ×機械学習でなんかできないかなー,と思っていたところこんな記事を発見しました.
[画像認識でスマブラの戦績を自動で作成するツールを作ろう](https://note.com/kelp168/n/nf717de3a2d22)

最終的に何を作るかは置いといて,面白そうだしとりあえずやってみよう!
配信画面からスマブラのスクリーンショットを撮る→画像認識でなんかする
ざっくりこんな感じで進めます.
今回の目標は範囲を指定してスクリーンショットを撮ることです.
配信画面全体ではなく,
![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3073654/77ff4522-9f7f-b4d0-bd3a-693deabb789d.pn

元記事を表示

Pythonでクリップボードにファイルをコピーする方法 (Windows)

:::note warn
**Windowsのみで動作します
PythonからC# .NETを呼び出しているだけなので速度が若干遅いです**
:::

## 筆者の環境
**OS: Windows 11 Pro 22H2 22621.963
Python: 3.10.6**

## 事前準備
**PythonからC# .NETを呼び出すためにpythonnetをインストールします**
“`
pip3 install pythonnet
“`

## 実際に書いていく
**pythonnetのclrをインポートします**
“`python:main.py
import clr
“`

**.NETから必要なクラスを呼び出すための準備をします**
> .NETのクラスをインポートするには先にclr.AddReference()でネームスペースを参照に追加しておく必要があります
“`python:main.py
clr.AddReference(‘System.Collections.Specialized’)
clr.AddReference(‘System.Windows

元記事を表示

深層学習の概要① 備忘録

## 深層学習の範囲
深層学習(Deep Learning)は、多くの層を持つ深いニューラルネットワークを使って学習を行う。特に、何層からが深層学習というような定義はない。
![深層学習の範囲](https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r01/image/n1302010.png)
[総務省ホームページより](https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r01/html/nd113210.html)

## 神経細胞について
![Wikipedia(神経細胞)](https://storage.googleapis.com/sitest-wp/blog/wp-content/uploads/2016/11/83761ecb0aeb6b20c63e30ffacf67776.jpg)
[Wikipedia(神経細胞)より](https://ja.wikipedia.org/wiki/%E7%A5%9E%E7%B5%8C%E7%B4%B0%E8%83%9E)

元記事を表示

Pythonでネストされた辞書型dictデータの中身のデータ型を確認する

# はじめに
dict型というよりむしろxmlデータの構造をパッと確認したくなってしまったのが事の発端。

# xmlファイルを辞書型で読み込み
サードパーティモジュールである、`xmltodict`をインストールする

https://pypi.org/project/xmltodict/

以下、XMLファイルを読み込んでxmltodictでパースした状態
“`python
#適当なファイルを読みたい場合
import xmltodict
with open(filename, encoding=’utf-8′) as fp:
xml_data = fp.read()
dict_data = xmltodict.parse(xml_data)
print(dict_data)

#とりあえず手っ取り早くサンプル。東京都の週間天気予報
import requests
import xmltodict
r=requests.get(“https://www.data.jma.go.jp/developer/xml/data/20221220014352_0_VPFW50_13

元記事を表示

MIDIキーボードをゲームのコントローラーにしてみた話

## 音が出せるだけじゃないはず
MIDIキーボードは音楽活動に使われるイメージが大きいですが、仕組みを考えるともっと幅広い使い方ができるように思えます。一つ一つの鍵盤がスイッチだと考えれば、押したらオン、離せばオフのようなシンプルな仕組みと捉えられるはずです!
そこで今回は、実際にPythonを使ってMIDIキーボードの入力を取得して、いろいろと遊んでみました。

## MIDI入力を取得する
まずはとにかく入力を見てみたいですよね。どんな仕組みでキーボードが動いているのか確認してみます。

### pygame.midi
`pygame.midi`を使うと、PythonでMIDI入力を取得できるらしいです。
pygame自体はPythonではおなじみのゲーム制作ライブラリですが、その中にmidiを取得できる機能が付属していました。早速動作確認。
“`python
import pygame.midi as m

### midiキーボードを定義
m.init()
i = m.Input( m.get_default_input_id() )

while True:
i

元記事を表示

Python のデコレーターで関数以外を返した場合

デコレーターで関数以外を返した場合はどうなるのかを確認します。

# 結論
* エラーは起きない
* 受け取った関数名で、渡した値が定義される

“`python
def decotator(func: Callable):
return ‘test’

@decorator
def test_func():
return 1

>>> test_func
‘test’

# メソッドの場合も同様
class Test:
@decorator
def test_method(self):
return 1

>>> Test.test_method
‘test’
“`

これを利用して`callback`をデコレーターでラップしてオブジェクトを定義する、ということをやってみました。
Djangoの`ModelForm`のようにCSVを扱える自作nパッケージ`model-csv`で以下のような使い方を実装してみました。

“`python
# 今までの使い方
class BookCsv(ModelCsv):
# Column

元記事を表示

n個以上欠損値があるカラム(列)を削除

# 概要
pandasのデータフレームで欠損値がn個以上あるカラム(列)を削除したい場合の方法。

# データを用意
“`Python
import numpy as np
import pandas as pd

data_path = “path/train.csv”
df = pd.read_csv(data_path)
“`

# 方法1
dropna()を使う方法。
dropna()は欠損値ではない要素の数がn個以上ある列(行)を残し、それ以外の列(行)を削除する。
よって、欠損値がn個以上ある列を削除したい場合は、行数を取得して、(行数-n)をdropnaに渡してやれば良い。
以下は、n=5の場合。
“`Python
n_samples = len(df)
n_thresh = n_samples – 5 # 行数 – n
df_null_rm = df.dropna(thresh=n_thresh, axis=1)
“`

# 方法2
各列の欠損数を算出して、欠損数がn個より少ない列だけ抜き出す方法。
isnull()で欠損値か判定し、sum()で列ごとの欠損数

元記事を表示

【d.py】ココフォリア形式のログをどどんとふ形式のログに変換する

# 概要
discord.py用のcogコードです。
`main.py`から`load_extension`する事を想定しています。
`main.py`の作例は[こちら](https://qiita.com/HikaruR/items/e518441cbe5a9a6acd77)

## バージョン情報
Python 3.8.12
discord.py 2.1.0

# 実装される機能
TRPGセッションツール[ココフォリア](https://ccfolia.com)で出力されるログを、hybridコマンドを通して古き良きどどんとふ形式のログに変換します。
[どどんとふ全タブ用コンバータ](http://dummy.flop.jp/trpg/conv/)を通した後に文字化けしている状態を修復するhybridコマンドも同梱しています。

“`python:html_conv.py
import discord
from discord.ext import commands
import re #正規表現を扱うモジュール
import typing #typing.Optional解禁

元記事を表示

discord.pyでcogを使う

# バージョン情報
Python 3.8.12
discord.py 2.1.0

# 最小限に近いもの
## メインファイル
“`Python:main.py
import discord
from discord.ext import commands

prefix = ‘!’
COGS = [
“Greeting”
]

class MyBot(commands.Bot):
“””起動用のあれこれ”””
async def setup_hook(self):
for cog in COGS:
try:
await self.load_extension(cog)
except Exception as e:
print(e)
await self.tree.sync()

# 接続に必要なオブジェクトを生成
intents = discord.Intents.default()
intents.messages = True
bot = MyBot(
command_prefix

元記事を表示

Python3.11を最速インストールしようとしてSSLモジュールでハマった話

お疲れ様です。KBTです。
待ちに待ったPython3.11がリリースされてから早2ヶ月、皆さんそろそろPython3.6.Xからの乗り換えを検討されている頃でしょうか。
私も早速インストールしてみましたので、今回はインストール時にハマった話を書いてみたいと思います。

# 今回の環境
“`
# cat /etc/centos-release
CentOS Stream release 8
“`

# OpenSSLをインストールする
まずはOpenSSLをインストールします。
折角新しくインストールするなら今をときめくOpenSSL3系をインストールしたいですよね。
試しにdnfでインストールしようとしたところ、本日(2022/12/17)時点で3.0.1がインストールされるようです。
“`
# dnf install openssl3
Last metadata expiration check: 3:49:02 ago on Sat 17 Dec 2022 08:33:35 AM JST.
Dependencies resolved.
===================

元記事を表示

python 関数の可変長位置引数について改めて考える

## 可変長位置引数(スター引数)
可変長位置引数を用いると関数の呼び出しコードが簡潔になり読みやすくなる。

以下のように初めての人と知り合いで発言を区別するコードを記述する。
~~~python:exam.py
def hello(message, name):
if not name:
print(‘nice to meet you’)
else:
print(f'{message}! {name}さん’)

hello(‘こんにちわ’, ‘saku’)
hello(‘こんにちわ’, []) # 第二引数を指定しないとTypeErrorが発生する

>>>
こんにちわ! sakuさん
nice to meet you
~~~
このコードに可変長位置引数を使ってみる
~~~python:exam2.py
def hello(message, *name):
if not name:
print(‘nice to meet you’)
else:
print(f'{message}! {

元記事を表示

【PySimpleGUI】画像閲覧とPDF画像変換アプリを自作してみた

# PySimpleGUIを使って、デスクトップアプリケーションを自作

## 目的と背景

日々の業務でPDF資料を使うことが非常に多い。また、PDFの一部だけ切り取って、共有したいという機会も多く、PDFを開いて画面キャプチャしたりするのが手間。
Windows標準のエクスプローラーでも画像やPDFの中身を見ることは出来るが、他の情報(ディレクトリや、そのほかの実行ファイルなど)が多く扱いにくい。

## 完成品と動作

以下のような、GUIを作成。

![画像2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3052682/c78cdb19-356e-864b-a833-ad78ef8b585d.png)

タブ1は、任意のディレクトリの画像形式(pnh,jpeg)のみが一覧で表示され、クリックすると中身の画像が閲覧できる。
※サイズは任意サイズに変更可能
※都合の良いPDFファイルがなく自作…

![画像4.png](https://qiita-image-store.s3.ap-nort

元記事を表示

【python】勉強メモ-その6 辞書について

### 1.はじめに
今回は、完全に自分用のメモとなります。

##### value(値)の取得方法
“`sample_01.py
favorite_languages = {
“Jane”: “python”,
“Sarah”: “c”,
“Ed”: “ruby”,
“Philip”: “python”,
}

ans = favorite_languages[“Jane”]
print(ans)

“`

“`result.txt
python
“`

##### .get() 存在しないキーにアクセスした場合のエラーハンドリング

`dict.get(“key”, “返すメッセージ”)`
第二引数を省略した場合は、`None`が返される。

“`sample_02.py
favorite_languages = {
“Jane”: “python”,
“Sarah”: “c”,
“Ed”: “ruby”,
“Philip”: “python”,
}

ans = favorite_languages.g

元記事を表示

paizaラーニング「i 番目の出力 3 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_i-thinput_step3
#### 私の解答
“`Python3
n, m = map(int,input().split())
S = [“”] * m
values = input().split()
for i in range(m):
S[i] = values[i]
print(S[n-1])
“`
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])

S = [0] * M
values = input().split()
for i in range(M):
S[i] = values[i]

print(S[N – 1])
“`

元記事を表示

paizaラーニング「文字列の配列の入力 2 Python3編」

#### 私の解答
“`Python3
li = [x for x in input().split()]
for ele in li:
print(ele)
“`

#### 解答例
“`Python3
S = [“”] * 10
values = input().split()
for i in range(10):
S[i] = values[i]

for s in S:
print(s)
“`

元記事を表示

paizaラーニング「i 番目の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step3
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
print(li[3-1])
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
print(li[2])
“`

元記事を表示

paizaラーニング「全要素の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step2
#### 私の解答
“`Python3
li = [“good”, “morning”, “paiza”,”813″, “pa13”]
for a in li:
print(a)
“`
#### 解答例
“`Python3
li = [“good”, “morning”, “paiza”, “813”, “pa13”]
for ele in li:
print(ele)
“`

元記事を表示

paizaラーニング「要素数の出力 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_output_step1
#### 私の解答
“`Python3
li = []
li.append(“Hello”)
li.append(“paiza”)
li.append(“1234”)
li.append(“pa13”)
print(len(li))
“`
#### 解答例
“`Python3
li = [“Hello”, “paiza”, “1234”, “pa13”]
print(len(li))
“`

元記事を表示

paizaラーニング「要素の挿入 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__elm_insert
#### 私の解答
“`Python3
N, M, K = map(int, input().split())
A = [int(x) for x in input().split()]

A.insert(M-1, K)
for ele in A:
print(ele)
“`
解答例2とほぼ同じでした。
#### 解答例1
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
K = int(values[2])

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

A.insert(M – 1, K)

for a in A:
print(a)
“`
#### 解答例2
“`Python3
N, M, K = map(i

元記事を表示

Slackのリアクション数を集計するアプリを作ってみた

本記事はCocone Advent Calendar 2022の18日目の記事となります。
# はじめに
はじめまして、ココネ新卒クライアントエンジニアの、たこくらげです。

ココネのエンジニア文化の1つにcode-festaというものがあります。
これはSlackのチャンネルで自分が実装したコードの共有や技術tips、実装で詰まった部分などを共有し、それに対してのリアクション数で半期毎に表彰を行うというものです。

code-festaは素晴らしい文化なのですが、一方で信じられないことに以前までこのリアクション数の集計は手動でやっていました…。(1時間とか普通にかかっていた)
流石にめんどくさいのでPythonの勉強を兼ねて簡易的な集計アプリを作りました。

# 作ったもの
まず初めに、このアプリを実行するためにあらかじめslack appを作成し、集計を行いたいチャンネルに追加をします。
今回は`conversations.history`と`users.info`を叩ければいいのでスコープは`users:read`と`channels:history`があれば良いかと思います

元記事を表示

OTHERカテゴリの最新記事