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

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

Python 単一スレッド内で複数のスレッドを立ち上げてイベント制御したいときに読む (15秒で読めます)

“`python
from threading import Thread, Event
import time
import random

class MyEvent():
th1 = Event()
th2 = Event()

def task1(event: MyEvent):
while True:
event.th1.wait()
print(‘th1 run.’)
event.th1.clear()

def task2(event: MyEvent):
while True:
event.th2.wait()
print(‘th2 run.’)
event.th2.clear()

# manage_thがth1とth2を立ち上げる
def manage_th(event: MyEvent):
task_list = [task1, task2]
for task in task_list:
th

元記事を表示

【Python3】ドラッグ&ドロップしたファイルにタイムスタンプをつけてリネームする

# 概要

https://qiita.com/MakotoIshikawa/items/a9e31bc6f13ac203f98d

PowerShell の .ps1 ファイルには、直接ファイルをドラッグ&ドロップできないので、ソースファイルとは別にショートカットを作成しなければなりませんでした。
ファイルだけで出来るように Python を使ってやってみました。

## 準備

まず、Python をインストールしておきます。

https://www.python.org/downloads/

## 手順

以下のファイルを作成します。

“`python:Add-TimeStamp.py
import sys
import datetime
import pathlib
import os

daystr = datetime.date.today().strftime(‘%Y-%m-%d’)
paths = sys.argv[1:]

for path in paths:
file = pathlib.PurePath(path)
new_file_pat

元記事を表示

Python3 List型の内容をsort uniqしたい

List型の内容をsort uniqしたい場合は、listをsetしてsortedすると実現できる。

list = sorted(set(list))

サンプルコード
“`py
# サンプルListを作成
company_list = [‘”テスト3株式会社”‘, ‘”テスト3株式会社”‘, ‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]

# 中身確認
print(company_list)
[‘”テスト3株式会社”‘, ‘”テスト3株式会社”‘, ‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]

# Listのsort uniqをする
company_list = sorted(set(company_list))

# 重複が削除されsortされた
print(company_list)
[‘”テスト1株式会社”‘, ‘”テスト2株式会社”‘, ‘”テスト3株式会社”‘]
“`

元記事を表示

超初心者がAtcoder ProblemsのC問題を181回から190回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

181 Collinearity

https://atcoder.jp/contests/abc181/tasks/abc181_c

“`python:practice.py
n = int(input())
points = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
for j in range(i+1,n):
for k in range(j+1,n):
x1,y1 = points[i]
x2,y2 = points[j]
x3,y3 = points[k]
if (y3-y1)*(x2-x1) == (y2-y1)*(x3-x1):
print(“Yes”)

元記事を表示

Python: Windows10 WSL Ubuntu20.04に、apt-getで入ってくれないPython3.10.xをインストール

なにはともあれ↓をしましょう

“`bash
$ sudo apt-get upgrade
$ sudo apt-get update
“`

ではPython3の最新バージョン3.10.3をインストールしましょう。
わたしの場合はすでにPython3.Xは入っていたので、upgrade で実行してみます。

“`bash
$ sudo apt-get upgrade python3

Reading package lists… Done
Building dependency tree
Reading state information… Done
python3 is already the newest version (3.8.2-0ubuntu2).
Calculating upgrade… Done
The following packages have been kept back:
fwupd libfwupd2 libfwupdplugin1 libgl1-mesa-dri libglapi-mesa libglx-mesa0 mesa-v

元記事を表示

きれいなPythonプログラミング(パイソニックなコードを書こう)を読んでみた

# はじめに

日頃、Pythonを使う機会があるのですが、「もう一歩詳しくなり、中級者を目指したい!」という思いから、2022/2/15に発売された書籍「[きれいなPythonプログラミング ~クリーンなコードを書くための最適な方法](https://www.amazon.co.jp/%E3%81%8D%E3%82%8C%E3%81%84%E3%81%AAPython%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E6%9C%80%E9%81%A9%E3%81%AA%E6%96%B9%E6%B3%95-Al-Sweigart/dp/4839977402)」を読みました。

特に、第6章にある「**パイソニックなコードを書こう**」が非常に勉強になったので自

元記事を表示

[Python]機械学習を用いてはんだクラック判別するアプリを作成する!

はじめに

はじめまして。エンジニア転職を目指して日々プログラミング学習をしています回路設計エンジニアです。
初めて作成したアプリを学習のアウトプットとして投稿します。Qita初投稿、初学者なので至らぬ点があると思いますが、暖かくコメントやご指摘をいただけると幸いです。

目的

はじめてアプリを作成するにあたり何をしたいのか考えたときに現職の業務に機械学習を活かせないかと思いました。
そこで「人(評価者)によって判断に差がある業務」、「学習用のデータが多数保存されている」2点を軸に考え、その結果、基板のはんだクラックの有無を判別するアプリを作成し、人(評価者)に判断に左右されず平等な判別を実現する。

はんだクラックとは?

普段使用しているあらゆる電気製品の内部にある基板は、はんだという金属で基板と電子部品が接合されています。
その基板と部品を接合しているはんだにクラック(ひび)が発生することをはんだクラックと呼んでいます。
製造時にはんだにクラック(ひび)が発生している状

元記事を表示

そのsupervisord.serviceファイルちゃんと動きますか?

## supervisord.serviceファイルとは

supervisorをsystemctlコマンド動くように登録するための設定ファイルです。
以下のディレクトリに**supervisord.service**ファイルを用意します。

“`bash
/etc/systemd/system/
“`

## 先人の知恵

これまで多くの方が、このファイルの作成方法を指南してくださっています。

Amazon Linux 2にSupervisorを設定する

https://nyan.blog/2021/05/21/laravel7-xsupervisor%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%EF%BC%81/

https://blog.shinki.net/posts/amazon-ilnux-2-supervisor

設定ファイルの中身は大体以下のような感じです。

“`shell:supervisord.servi

元記事を表示

Python 入門1 (算術演算子, ブーリアン, etc.)

# はじめに

このシリーズは、プログラミング経験やアルゴリズムとデータ構造などの一定の知識がある方に向けて、Pythonの基礎について解説することを目的としています。

一つの記事あたり大体15分程度で読み終わるような文章量に調整しています。

また、この記事で取り扱う内容はPython 3を前提としています。

# 目次

– Pythonとは
– 算術型と算術演算子
– ブーリアン型と論理演算子
– リスト
– リスト内包表記
– 関数の宣言
– 参考文献

# Pythonとは
Pythonは、動的型付けを特徴とするマルチパラダイム言語です。

Pythonを用いるメリットの一つとして、疑似コードと見間違えられるような洗練されたシンプルな文法が挙げられます。

他のプログラミング言語では冗長で複雑になってしまうような場合でも、可読性を失わず簡潔なコードを記述できることは、多くのプログラマーにとって魅力的に映ることでしょう。

# 算術型と算術演算子

#### 整数型の宣言

“`int.py
x = 3
x += 2 # 複合代入演算子
print(x, type(x)

元記事を表示

超初心者がAtcoder ProblemsのC問題を171回から180回までをpythonで解いてみた

解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!

171 One Quadrillion and One Dalmatians

https://atcoder.jp/contests/abc171/tasks/abc171_c

“`python:practice.py
n = int(input())
ans = “”
while (n > 0):
n-=1
temp = 97 + (n % 26)
ans += chr(temp)
n //= 26
print(ans[::-1])
“`

桁数はwhile文で決めていきます。26で割れる回数が桁数になる感じです。while文の中で1を引いているのはunicodeの97番が”a”になるので引かないと入力が1の時にbを出力してしまうからです。じゃあ、tempで足す値を96にしても動くんじゃねってなると思い試してみましたがzを出力するときに26%26=0によりユニコード番号96番の

元記事を表示

【python】wiktionaryの`{{}}`マークアップの整形

# 概要
wiktionaryの記事テキストのうち`{{}}`で囲まれたマークアップ(テンプレート)を整形(実際の記事で書かれた文字列へ変換)しました。

[【python】wiktionaryの見出しのうち日本語、名詞に関するものを抽出する](https://qiita.com/shimajiroxyz/items/0461de8be1ee0ca7dbab)の続きです。このページで作ったファイルから「日本語」の「名詞」に関する情報を抽出するため、該当するテンプレートの調査をしました。

なおテンプレートはユーザが自由に作ることが可能で非常に多くの種類があるため、対象をしぼっています。今回は、前述のページで抽出した日本語の名詞の語義に関する部分のテンプレートを対象としました。

# 背景
[【python】wiktionaryから語義情報を抽出する](https://qiita.com/shimajiroxyz/items/f75b4f7717643d3fbcf0)にて、wiktionaryの語義情報のうち、日本語の名詞に関するものを抽出しました。次のステップとして、マークアップを除去

元記事を表示

[FastAPI]複数ファイルをrequests.post()で渡す

FastAPIに外部のスクリプトファイルからFastAPIにrequests.post()で複数ファイルを渡す際につまづいたのでメモをここに残します。

“`python:uploadFile.py
from typing import List

from fastapi import FastAPI, File, UploadFile
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.post(“/uploadfiles/”)
async def create_upload_files(params:dict,fileList: List[UploadFile]):
return hogehoge(params, files)
“`

requests.post()で複数ファイルを渡したい場合は下記のようにすることで出来ました。
※dictのキーがエンドポイントのfileList(今回はこの名前にしました)という名前と一致していないとFastAPI側で受け取ることが出来ないので注意が

元記事を表示

pycord async on_command_error() で起きる主なエラー

# async on_command_error() とは

コマンド形式 (プレフィクス式コマンド) で起きたエラーをキャッチする関数です。
引数は `context`, `error` の2つです。

“`python
@bot.event
async def on_command_error(ctx: commands.Context, error):
:
:
“`

# 基本的な対処法
あくまで自分の考えですのでこの通りにしろ、というわけではありません。

1. この関数内で isinstance(error, `エラー名`)で指定して拾う
2. `@コマンド名.error` で拾う。

ただし、いちいち 2 を書くのがめんどくさい、2 では拾いきれないエラーが生じることもある。という点で この関数を使用することをお勧めします。

# 主なエラーと説明
用語:
ユーザー … 実行者 (人間側)
クライアント … Bot
エラー … クライアントがプログラムを実行した際、実行に失敗した時に起こる

## [commands.CommandNotFo

元記事を表示

numpyのexp, log等はtorchで高速化できる

numpyのexp, log等を使用していましたが,かなりの回数繰り返し呼び出しをする必要があり無視できないほど時間がかかったのでその際に発見した知見に関して書きます.

結論から言うとtorchから呼び出してnumpyに戻すという方法が比較的きれいなコードを保ちつつ高速に実行できます.

# 試した方法

## numexpr
1つ目の方法はnumexprを利用する方法です.
numexprではevaluate関数を用いてnumpyを実行することによって(なぜか)高速化できるものとなっています.
ただし,scipyには対応していません.
この方法はCPU上の動作としては最速ですが,evaluateを利用する必要があるため,flake8のignoreを利用する必要性やerror messageがわかりづらくなってしまうなどの問題点があります.

## torch
2つ目の方法はtorchを利用する方法です.
torch側からはnumpyを受け付けていないこと,torch.Tensorが少し特殊なことからinput, output時にそれぞれ変換が必要になります.
**後述の実験からもわ

元記事を表示

VSCodeでPython外部モジュールの予測入力させたかった。

##### あらすじ
ご無沙汰しております。じーくです。

PythonのWebスクレイピングの本を読んでいたら、
外部モジュール(tesseract)を使用して実行するコードがあったので、
いつも通り環境にインストールしてコーディング……しようとしたら何やら異変……

**importしたモジュールの関数候補がコーディング中に出てこない……**
![denele.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377966/1ffd8b4b-3134-5d5f-b1f3-573366af0a71.png)
確かにインストールして、Powershell側でもコマンド入ってること確認したんだけどなぁ……
再インスコか……?再起動ですまなかったか……?

これは一大事。まあ一応開発はできるし実行できれば動くんだけど、
コーディング中には、ちゃんと書けているのかがわからない。
そして、Warningのにょろにょろが気持ち悪い……(個人の感想)
ああでもねぇこうでもねぇと一日中ネットの海を泳ぎまわり、
ようやく解

元記事を表示

kerasを使用して虹ヶ咲学園のキャラクターを画像認識させてみた

どうも、学生エンジニアのirohasです。
本日は、本職であるAiをテーマにしたプログラムを記事にします。

今回やったことは、タイトルの通り「アニメのキャラクターを用いてキャラクターの画像認識をやってみた」です。

今回使用させてもらったアニメはあのアニメオタクなら知らぬ人はいない伝説のスクールアイドルアニメである「ラブライブ!」シリーズ最新作の「虹ヶ咲学園スクールアイドル同好会」になります。

ちなみに余談ですが、僕は虹ヶ咲ではMiaちゃんが最推しです。

それでは早速書いていきます。

# 目次
[1.環境](#1-環境)
[2.使用ライブラリ](#2-使用ライブラリ)
[3.データセット作成・修正](#3-データセット作成・修正)
[4.モデル作成](#4-モデル作成)
[5.学習結果](#5-学習結果)
[6.画像認識](#6-画像認識)
[7.おわりに](#7-おわりに)

# 1. 環境
Anaconda3 (64bit)
Jupyter Notebook
Python 3.9.0

# 2. 使用ライブラリ
##### ・標準ライブラリ
os : ローカルフォルダ用

元記事を表示

Python 複数のEventを扱いたいとき悩んだ時に見るコード例 (30秒で読めます)

2つのタスクを別のスレッドで実行し、各スレッドでキューに値を入れてEventをセットする。メインスレッドはどちらかのEventがセットされるまで待機し、Eventがセットされていて条件を満たしていれば実行するコード。

“`python
import threading
import time
from collections import deque
import random

class MyEvent():
def __init__(self) -> None:
self.event1 = threading.Event()
self.event2 = threading.Event()

class MyDeque():
def __init__(self) -> None:
self.q1 = deque([])
self.q2 = deque([])

def main_thread(event: MyEvent, q: MyDeque):
begin = time.time

元記事を表示

LaTeX 表記法

最近,$\LaTeX$ 表記について,ちょっとなあ?と思うことが多かったので,メモしておきます。そんなこと,知ってるよという向きにはご容赦のほどお願いします。

以下では,△△を書くときは,〇〇の表記を $ $ で挟むと,□□になるという感じで書きます

# 関数名(など)

`\` を付ける

sin(x), cos(x), tan(x) などは \sin(x), \cos(x), \tan(x) などと書く。さすれば,$\sin(x)$, $\cos(x)$, $\tan(x)$ となる。

lim_{n \to \infty} a_n=0 は \displaystyle \lim_{n \to \infty} a_n=0 で,$\displaystyle \lim_{n \to \infty} a_n=0$

a \bmod m = 0 は $a \bmod m = 0$

a \equiv 0 \pmod{m} は $a \equiv 0 \pmod{m}$

対象となる関数名は,arccos, arcsin, arctan, arg, cos, cosh, cot, coth

元記事を表示

【Python3】pytestで例外を検出する方法

メモ書きです

### 環境
– python3.8.10
– pytest6.2.5

### 実装例

“`py
# pytestモジュールをimport
import pytest

def target(int):

if int > 100:
# 100より大きい数値の場合例外を送出
raise ValueError(“不正な値です”)
return int * 2

def test_target():

test_int = 101
# ValueErrorを検知
with pytest.raises(ValueError) as e:
target(test_int)

# エラーメッセージを検証
assert str(e.value) == “不正な値です”

“`

“` with.pytest.raises(例外クラス) “` で例外を検知します。
注意点は以下の2点です。

– pytest.raises()

元記事を表示

OpenCVでレシート画像を切り抜き (射影変換)その2

# 目的
– レシートと背景が写った写真からレシートをくりぬきたい
– OpenCVの理解
– なんか画像処理っぽいことしたい

# 前回のあらすじ
https://qiita.com/kazzzu/items/d9684319d2d0b64d6f31

写真の中からレシート部分を認識。線で囲う、まで行った。
今回は射影変換をやってみたいと思いました。

# 環境
– Windows11 Home
– VSCode
– Python3.9
– pip
opencv-python 4.5.5.62

# 本編
射影変換をやってみたいと思いました。
参考:

https://qiita.com/mix_dvd/items/5674f26af467098842f0

## 輪郭抽出から
前回の輪郭抽出の結果はこんな感じ

![20220303_084409.jpg3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/245578/f8561a42-492e-73d9-0a72-2a546747de0a.jpe

元記事を表示

OTHERカテゴリの最新記事