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

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

レガシーなシステムのコードを勉強がてら、自分なりに最適化してみる

# Perlは好きですか?

こんにちは。自分は、Pythonを主言語として、いつも書いていますが、
今回、自社システムを学ぶためにも書かれているコードを勉強しつつ、コーディングしてみた話です。

システムは、かれこれ十数年クラスの凄いシステムです。
当時、師匠が一人で作ってくださり、今もなお現役として稼働し続けているシステムで、
全てPerlで書かれているCGiとなります。
セキュリティ的な面はさておき、コード自体は、特にPerlっぽさもないコーディングに仕上がっており、今後使われるかは不明です。
また、これら勉強を通してためになった部分を最も個人的にためになった箇所だけを抜粋し、こちらに投稿させて頂きます。

それでは、始まります。
###### ※なお、公開しているコードは一部を抜き出したもので、不完全であり、コピペでは動きません。 

## IPカメラ(ネットワークカメラ)から画像を取得したい。

弊社システムでは、必須な項目であり、現場のカメラから画像を取得し、システム上に表示させなくてはイケません。
そこで、弊社のシステムでは登録された情報からカメラに直接アクセス、または間

元記事を表示

scratch3.0でAWSを操作してみたかった(できなかった)

# 前置き

これは[株式会社SUPER STUDIO Advent Calendar 2022](https://adventar.org/calendars/8255)の19日目の記事です。

せっかく機会を得たので、Qiitaの記事を久しぶりに書いてみようと思って自分のアカウントを見たら、前に投稿したのが2014年でした。恐るべき光陰。
以前の記事の頃とは自分の境遇も変わったので、新たな気持ちで記事を作ってみようと思います。

技術トピックで自分がよく読む記事としては、筆者の経験を踏まえたうえで他の人の役に立つようなナレッジを共有しているものと、役に立つかわからないことに情熱を注いでいるようなものと、のどちらかが好きです。
今回記事を作るにあたり、他の人の役に立つものも一瞬考えたのですが、今回は後者で行きます。

### 前提条件

今回の記事の筆者の環境です。

* Windows 10 Pro
* Ubuntu 20 on WSL2

あと、AWSアカウントを持っていることが前提です。

# やりたいこと

ノーコードとかいうのが流行っているらしいじゃないですか。ものとして本

元記事を表示

paizaラーニング「辞書順に出力 2 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_dictionary_step2
#### 私の解答
“`Python3
li = (input().split())
sorted_li = sorted(li)

for ele in sorted_li:
print(ele)
“`
#### 解答例1
“`Python3
S = [0] * 5
values = input().split()
for i in range(5):
S[i] = values[i]

sorted_S = sorted(S)

for s in sorted_S:
print(s)
“`
#### 解答例2
“`Python3
S = [0] * 5
values = input().split()
for i in range(5):
S[i] = values[i]

S.sort()

for s in S:
print(s)
“`

元記事を表示

paizaラーニング「辞書順に出力 1 Python3編」

https://paiza.jp/works/mondai/array_primer/array_primer__string_dictionary_step1
#### 私の解答
“`Python3
A = [“zaipa”, “izapa”, “paiza”]

for a in sorted(A):
print(a)
“`
#### 解答例
“`Python3
li = [“zaipa”, “izapa”, “paiza”]
sorted_li = sorted(li)

for ele in sorted_li:
print(ele)
“`

元記事を表示

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

https://paiza.jp/works/mondai/array_primer/array_primer__string_i-thinput_step4
#### 私の解答
“`Python3
n, m, l = map(int,input().split())
values = input().split()
print(values[n-1][l-1])
“`
WolfMoon先生の解答例を参考にさせていただきました。
#### 解答例
“`Python3
values = input().split()
N = int(values[0])
M = int(values[1])
L = int(values[2])

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

print(S[N – 1][L – 1])
“`

元記事を表示

【Python】csvから読み込んだ文字列が一致しないとき

# 結論
csvを読み込む時,エンコーディングで`’utf-8-sig’`を指定する.
“`python:例
with open(file,encoding=’utf-8-sig’) as f:
csvreader = csv.reader(f)
“`
csvを読み込んだとき先頭に`\ufeff`がある場合も同じ対処でOK.

# 発端
csvにある項目を一気に`grep`的に検索したかった.
テストで動かしたとき,明らかに一致している文字列があるのに検出してくれなかった.
シェルスクリプトで書く方が楽な人は多いかもね…
“`csvs:search_word.csv
aaa
bbb
ccc
“`
“`txt:test.txt
aaajfdo
fewapjg
bbbdiaf
“`
“`python:search.py
from glob import glob
import csv
import re

target_csv = “search_word.csv”
target_path = “./*” #カレ

元記事を表示

【python】勉強メモ 速習Flask①

# Flask勉強メモ

コピペしていけば、仮想環境作成からブラウザでFlaskの実行を確認できる手順となっております。

## 実行環境
– Windows10 Pro
– Python 3.11.0

## ディレクトリ構造
“`
pydir/
┣myproject/
┣venv/
┣hello.py
┣templates/
┣hello.html
“`

## 全体の流れ
1. 仮想環境作成
2. 仮想環境有効化
3. 仮想環境内で、Flaskインストール
4. appファイル作成
5. appファイル起動(Flask起動)
6. ブラウザで確認
7. Flaskの終了
8. 仮想環境の終了

### 1. 仮想環境作成
**注)** コマンドは、VScode上のPowershellから実行しております。
**注)** コマンドは、myprojectフォルダで実行してください。

`.venv`という名前の仮想環境を作成
“`
python -m venv .venv
“`
### 2.仮想環境の有効化
仮想環境を有効化
“`
.ve

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事