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

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

Raspberry PiへOpenCVをインストールする~2020年3月最新

RaspberryPiでOpenVをインストールするのに、いろいろな方法がありますが、内容を理解していないとうまくインストールすることが出来ないので、いろいろ試した結果、今回記載した内容でインストールすることが出来たので、忘備録を兼ねてまとめてみました。

環境


RaspberryPi4 4GB
Raspbian Ver 10.3
Python 3.7.3 32bit

1.パッケージ管理システムをアップデート

~~~python3
sudo apt-get update
sudo apt-get upgrade
~~~

2.各ライブラリをインストール

~~~python3
sudo apt-get install build-essential cmake unzip pkg-config
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
sudo apt-get install libavcodec-dev libavformat-dev libsws

元記事を表示

ABC42(ARC58) C,D問題

ABCの過去問をひたすら解いて行こうと思い立って始めました。
今回はABC42のC、D問題です。
###C問題
[C問題](https://atcoder.jp/contests/abc042/tasks/arc058_a)はNから出発して1ずつ足していって嫌いな数字がどの桁にも入ってなかったらそれを採用、的な解き方。

“`python:abc42_c.py
n,k = map(int,input().split())
d = list(map(int,input().split()))
l = [0]*10

for i in d:
l[i] =1

flag = 0
while True:
flag = 0
for i in range(len(str(n))):
if l[int(str(n)[i])] == 1:
flag = 1
break
if flag == 1:
n += 1
else:
break

print(n)
“`
##

元記事を表示

16進数の値が書かれたテキストファイルをバイナリファイルに変換する

#概要
– 16進数のテキストファイル –> バイナリファイルに変換する

“`test.txt
1234567890abcdef
“`
↓バイナリファイル化
test.bin
![test.bin.png](https://qiita-image-store.s3.amazonaws.com/0/34777/8709f126-7d11-7879-b469-7c0f0c775aea.png)

この例でpython3.2以降なら、[int.to_bytes](https://docs.python.org/ja/3/library/stdtypes.html#int.to_bytes)を使って、

“`py:
with open(“test.txt”) as fin, open(“test.bin”, “wb”) as fout:
s = fin.read()
fout.write(int(s,16).to_bytes(len(s)//2,”big”))
“`

とやってしまうのが簡単ですね。

以下は、空白や改行などが入っても対応する場合のコードです。

元記事を表示

FastAPIでテスト用のクリーンなDBを作成してpytestでAPIのUnittestを行う

## やること

1. [FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装](#FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装)
2. [テストケース毎にDBを作成し、他のテストケースや本番用のDBに影響を与えずにpytestでAPIのunittestを行う](#テストケース毎にDBを作成し、他のテストケースや本番用のDBに影響を与えずにpytestでAPIのunittestを行う)

## 1. FastAPIでsqlite3を使用した簡単なCRUDアプリケーションの実装
### CRUDアプリケーション

userアカウントに関するCRUDアプリを作成します。テスト手法の紹介がメインなので以下の簡単な機能だけ実装します。

– Create: ユーザー登録

### 準備
FastAPIに加えて以下のパッケージのpip installが必要です。

– sqlalchemy
– sqlalchemy-utils
– async-exit-stack (Python 3.7では不要)
– async-generator (Py

元記事を表示

DiscordBOTをPythonで作るときの個人的によく使うテンプレート(備忘録)

# 前提
“`:環境
Python 3.6.6
Discord.py-1.2.5
“`
“`:ディレクトリ構造
├ cogs
│ └ mainCmd.py
└ main.py
“`
# コード
“`python:main.py
import discord
from discord.ext import commands
import traceback

DiscordBot_Cogs = [
‘cogs.mainCmd’
]

class MyBot(commands.Bot):
def __init__(self, command_prefix):
super().__init__(command_prefix)
for cog in DiscordBot_Cogs:
try:
self.load_extension(cog)
except Exception:
traceback.print_exc()

元記事を表示

【python】watchdogでフォルダ監視

## はじめに
こんばんは、久しぶりの投稿になります。
時間が少しできたので
1年位前にお流れになったアプリ開のを供養を込めて
もう一度作り直してみようと思います。

今回作るのはフォルダ監視を行う常駐アプリです。
単純にどこか指定のフォルダにファイルが置かれたら
指定のフォルダにコピーするというだけの簡単なものです。
なんだかんだ時間がかかりましたが。。。

## 開発環境
Windows 10
python-3.8.2
使用ライブラリ:watchdog

## 監視
とりあえず以下のようなWatchFileHandlerクラスを作ります。
これでだいたい監視は終わりです。やったね!

最初

“`Python:folder_watch.py
# 監視イベント取得クラス
class WacthFileHandler(FileSystemEventHandler):
def __init__(self, watch_path, copy_to_path, backup_path):
super(

元記事を表示

AtCoder Beginner Contest 158 参戦記

# AtCoder Beginner Contest 158 参戦記

## ABC158A – Station and Bus

2分で突破. 書くだけ. 1種類か、2種類か、それだけ.

“`python
S = input()

if len(set(S)) == 1:
print(‘No’)
else:
print(‘Yes’)
“`

## ABC158B – Count Balls

3分半で突破. N が操作何回分を含むかを計算. n 回であれば n * A 個青いボールがある. 途中かけになった分については、A個以内であればその個数が、そうでなければA個青いボールがある.

“`python
N, A, B = map(int, input().split())

result = 0
result += N // (A + B) * A
result += min(N % (A + B), A)
print(result)
“`

## ABC158C – Tax Increase

4分半で突破. A≤B≤100 ってことは、たかだか1000

元記事を表示

MoviePyを使ったらいろいろつまづいたのでメモ

動画編集をやりたく,[moviepy](https://github.com/Zulko/moviepy)を使ってみようと思ったがいろいろつまづいたのでメモ.

## 環境

mac Mojave
python 3.6.8

## 結論

「動画ファイルをInputとしてテキストや画像を追加し,Outputとしても動画ファイルを書き出す,」というユースケースなら以下が楽です.

“`shell
pip install moviepy==1.0.0

## ※macのQuickTimePlayerでしか動作確認していないため,もしかしたらこっちじゃないと動かないかも
## moviepyのversion1.0.0を少しいじったもの
# pip install -U git+https://github.com/mynkit/moviepy.git@mynkit/dev
“`

sample_moviepy.py

“`Python
import moviepy.editor as mp

AUDIOPATH = ‘hogehoge.mp4’
IMGPATH = ‘hogehoge

元記事を表示

1行素数判定コード (Python3)

# 1行素数判定コード
知人の[marien](https://qiita.com/marien)が1行素数判定のコードを作成してくれたのでその紹介です。
(このコードはとにかく1行で書くことを目的としたので計算速度とかは全く気にしておりません)

“`Code
print(‘not sosu’) if 0 in [(i + 1 + num) % num for i, num in enumerate(reversed(range(2, int(input()))))] else print(‘sosu’)
“`

元記事を表示

FlaskとOpenCVでカメラ画像をストリーミングして複数ブラウザでアクセスする

## はじめに

ラズパイのカメラ画像をローカルネットワーク内で複数ブラウザ(タブ)にストリーミングするのに少しハマったので、ここに自分の勉強も兼ねてまとめます。

今回のスクリプトは以下に置いてあります。
https://github.com/RIckyBan/pi-cam-streaming

## 環境
– Raspberry Pi 4 Model B (4GB)
– Python: 3.7.3
– OpenCV: 4.1.0
– Flask: 1.0.2
– カメラ: Raspberry Pi Camera Module V2

## OpenCV+Flaskによるシンプルなストリーミング

ラズパイのカメラ画像をストリーミングするには、mjpg-streamerを使う方法と、PicameraやOpenCVなどのライブラリでカメラからフレームを直接取得しサーバー上で処理する方法の2つがあります。今回は、後々OpenCVでフレームに何らかの画像処理をすることを考えて、後者を採用します。

この実装に関しては以下の記事が大変詳しく参考になりました。
[FlaskとOpenCVで l

元記事を表示

量子ビットについて簡単にまとめてみた(初心者)

“`math
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
“`
量子コンピュータの学習の基本となる「量子ビットの数学的取り扱い」について簡単にまとめておく。なお今回は量子ゲートにはスポットを当てずに、量子ビットの数学的体系にのみ焦点を当てていく。
##1量子ビットについて
1量子ビットはブラケット記号を使用し、
$$
\begin{align}
\ket{Q} &= \alpha\ket{0} + \beta\ket{1} \\\
\end{align}
$$
のように記述できる。通常のビットの0、1状態($\ket{0},\ket{1}$)の重ね合わせ状態を表しており、規格化定数(α、β)倍の線形結合状態となっている。なお、これは確率振幅として解釈されるため、以下の条件を満たす。
$$
\begi

元記事を表示

RaspberryPi起動時にPythonのGUIを動かしたい

今回はラズパイでpythonのGUIプログラムを書いて、起動時に実行しようとしたときに詰まったのでその時に行った解決策をまとめておこうかと思います。
#始めに
まず始めに、最新のRaspbianだと今回の方法は使えないかもしれません。風の噂でできなくなったと聞きました…orz
# 環境
– RaspberryPi 3B+
– Raspbian 10.3
– Python 3.6
– GUIはTkinter
– clock.py (GUIプログラム)

# 失敗策
起動時にプログラムを実行させるならrc.localやらsystemctlやらcronやら使え、とありますがどれもGUIのプログラムではエラーが出ました。logを見ると、DISPLAYが見つからん、というような感じだったはず…。
補足ですが、rc.localは少し前から非推奨になっています。起動時に何かしたいときはsystemctlにサービスを登録しましょう。

# 解決策
autostartを使いました。調べると様々な場所にautostartが見つかるのですが、今回動作を確認したのは、
“/etc/xdg/lxses

元記事を表示

【Python】Missingno ライブラリ を使って欠損値を可視化

# はじめに
データ分析において、データの欠損は一番初めに立ちはだかる課題の一つです。より良いモデルを作るには、欠損値を予め把握し処理してあげる必要があります。
Missingnoは欠損値を効果的に可視化することで、データの前処理をより効率的にすることを可能にします。

## 1. Missingnoのインストール
“`terminal
pip install missingno
“`
で Missingnoをインストールします。

## 2. Missingno を使ってみる

MissingnoはPythonのPandasデータで利用できます。
データはKaggleのTitanicデータを使用します。

“`python
import missingno as msno
import pandas as pd
“`

“`python
msno.matrix(df)
“`

![download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407366/7bf33a84-f637-

元記事を表示

No such file or directory: ‘chromedriver’: ‘chromedriver’の解決

##seleniumを使おうと考えて、、
[Python + Selenium で Chrome の自動操作を一通り](https://qiita.com/memakura/items/20a02161fa7e18d8a693)にならってseleniumの設定を行っていました。
`非headlessモードでテスト`の部分でエラーが、、、
エラーメッセージ:
` File “/Users/[ユーザ名]/.pyenv/versions/3.7.3/lib/python3.7/site-packages/selenium/webdriver/common/service.py”, line 76, in start
stdin=PIPE)
File “/Users/[ユーザ名]/.pyenv/versions/3.7.3/lib/python3.7/subprocess.py”, line 775, in __init__
restore_signals, start_new_session)
File “/Users/[ユーザ名]/.pyenv/versions/3

元記事を表示

次の13日の金曜日がいつか求めるプログラム

#初めに
来週が13日の金曜日で、その次の13日の金曜日が次いつ来るかが気になったので、13日の金曜日を求めるプログラムをPython3で書きました。
(執筆時2020年3月07日)

N番煎じ感が否めないですが、何か参考になれば幸いです。
また、こうした方がいいなどのアドバイスがありましたらご教示お願いします。

#使ったモジュール
今回はcalenderモジュールとdatetimeモジュールを使いました。

calenderモジュールはその名の通り、カレンダー情報を取得できます。
datetimeモジュールは現在の年月を取得するのに使いました。

それぞれのモジュールの使い方は下記ドキュメントを参考にしてください
[calender](https://docs.python.org/ja/3/library/calendar.html)
[datetime](https://docs.python.org/ja/3/library/datetime.html?highlight=datetime#module-datetime)

#ソースコード
この記事のタイトルでは次の13日の

元記事を表示

discord.py入門(2)

# はじめに
discord.pyの非公式のサーバーを運用しています(開発者の方もいますが)。
ここでは質問も受け付けています。また、**長期的にサポートが欲しい方**向けに、個人チャンネルを作成しそこでサポートを受けることもできます。
個人サポートを受けたい方は、下の招待urlから入り、`@すみどら#8931`にDMをお願いします。
https://discord.gg/KPp2Wsu **この記事についての質問もこちらにお願いします**

# この記事について
この記事はdiscord.pyについて段階を踏んで勉強していくための記事になります。
まず始めに基本の書き方を学び、次に発展的な内容を学びます。
**【シリーズ】**

[discord.py入門(1)](https://qiita.com/sizumita/items/9d44ae7d1ce007391699)
[discord.py入門(2)](https://qiita.com/sizumita/items/b37e74fca41d98077a18)

# 注意
**この記事は少しでもPythonができる人向けになり

元記事を表示

discord.py入門(1)

# はじめに
discord.pyの非公式のサーバーを運用しています(開発者の方もいますが)。
ここでは質問も受け付けています。また、**長期的にサポートが欲しい方**向けに、個人チャンネルを作成しそこでサポートを受けることもできます。
個人サポートを受けたい方は、下の招待urlから入り、`@すみどら#8931`にDMをお願いします。
https://discord.gg/KPp2Wsu **この記事についての質問もこちらにお願いします**

# この記事について
この記事はdiscord.pyについて段階を踏んで勉強していくための記事になります。
まず始めに基本の書き方を学び、次に発展的な内容を学びます。
**【シリーズ】**

[discord.py入門(1)](https://qiita.com/sizumita/items/9d44ae7d1ce007391699)
[discord.py入門(2)](https://qiita.com/sizumita/items/b37e74fca41d98077a18)

# 注意
**この記事は少しでもPythonができる人向けに

元記事を表示

fishシェル使用時にvirtualenvを通常のコマンドで立ち上げられない

久々にvirtualenvを使おうと思ったら謎のシェルスクリプトエラーが発生しハマったのでメモ。

## 結論
`source venv/bin/activate`

の代わりに

`source venv/bin/activate.fish`

を使う。
`venv`の部分はもちろん作成した仮想環境名。

## 参考
https://github.com/pypa/virtualenv/issues/853

元記事を表示

Python3.8の新機能を一部触ってみた①

# はじめに
弱々Pythonエンジニアがpython3.8の新機能を一部触ってみました。
よくわからないものはすっ飛ばしてます(ビルドだプロファイルだなんだのは飛ばしてます)。
詳しくは[公式ドキュメント参照](https://docs.python.org/ja/3/whatsnew/3.8.html)

# セイウチ演算子
>大きな構文の一部として、変数に値を割り当てる新しい構文 := が追加されました。 この構文は セイウチの目と牙 に似ているため、「セイウチ演算子」の愛称で知られています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/357470/a43c0f97-a343-9a26-4920-517f01732294.png)
セイウチ演算子カワイイ

“`py
array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# python3.8以前
# n = len(array) > 1

元記事を表示

【Python】BeautifulSoupとrequestsを使ってJリーグの選手情報をスクレイピングして表にしてみた!

#はじめに
##今回やりたいこと
Webスクレイピングによって、Jリーグのデータサイトの情報を収集&分析したいと思いました。
その第1段階としてまずはデータを収集し、それを表にまとめてみました。
##結果
以下がJリーグの川崎フロンターレというチームの選手一覧の情報を表にまとめた結果です。
コメント 2020-03-06 221617.png
※CSVファイルとして出力したものを、Googleのスプレッドシートで開いています

#きっかけ
元々サッカー観戦が好きで、その流れでスポーツのデータ分析にも興味を持っていました。
そしてプログラミングを学ぶうちに自分でもできるのではないかということでプログラムを作り始めました。
#コードと解説
##前提
– 現在のスキル
– Progate終了
– Ruby on Ra

元記事を表示

OTHERカテゴリの最新記事