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

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

mutagenでmp3とflacの埋め込み画像を表示

**Python 3.7.3** で動作確認

“`python
import mutagen
from io import BytesIO
from PIL import Image

# ファイル名は適宜変更してください
file = r”example.mp3″
# ファイル読み込み
audio = mutagen.File(file)

# 画像のリストを取得
if ‘audio/mp3’ in audio.mime:
images = for i in audio if “APIC” in i]
elif ‘audio/flac’ in audio.mime:
images = audio.pictures

for imgb in images:
# 画像を表示用に変換
img = Image.open(BytesIO(imgb.data))
img.show()
“`

検索しても画像を新たに埋め込む記事ばかりで、埋め込み画像を表示する記事が見つけられなかったから書いてみました。

**”APIC” == i

元記事を表示

Pythonで「クラス(class)」と多重継承を使う第一歩

# Pythonで「クラス(class)」を使ってみた.
初めてのQiita投稿です.

こんにちは.
現在,私は大学の研究活動でNNを構築するのにPythonを使っています.
研究室配属されて初めてプログラミングを始めたためPython歴は2年ってところです.

なぜこのタイミングでQiitaに投稿しようと思ったかというと,
普段からコードの書き方について新しい発見をしても特段どこかにメモをすることなく
脳の片隅に追いやられてしまっていました.
そのせいで何度も同じところにつまずいては検索を繰り返していて
「さすがにいい加減なんとかしないといけない」と危機感が募ってきたからです.
また,いつも思考停止状態でdef文を使ってゴリ押ししていたのですが
それだと”その場しのぎ”的なコードになり可読性が低くなっていました.
そこでclassを使ったらちょっとはマシになるんじゃないかと淡い期待を抱いており
上達への第一歩はその記憶を残すことだと思ったからです.

### まずはclassの初歩的な使い方
“`
class A:
def __init__(self,name):

元記事を表示

JupyterNotebookで日本語文字化けイライラ…

#環境
Anacondaという開発環境のパッケージをインストールしていることが前提です。
Windows、jupyter notebook環境下での設定方法です。
(最後にはVisual Studio Code上のJupyter Notebookで動作確認しています。)

##文字化け解消のための3つ手順!!
###1:IPAexフォントをダウンロード
以下のサイトをクリックし、IPAexゴシック(Ver.003.01)をダウンロードして下さい。
https://ipafont.ipa.go.jp/node26#jp

![qiita記事_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/475270/71895693-abb3-6938-26bf-f2785023b9b8.jpeg)

ダウンロードしたzipファイルを解凍すると、**ipaexg**というファイルがあります。
![qiita記事_LI (2).jpg](https://qiita-image-store.s3.ap-northeas

元記事を表示

pythonでソートアルゴリズム -シェルソート

# はじめに
プログラミング初心者がソートアルゴリズムを自分なりに理解し、コーディングしてみたものの忘備録になります。
間違いもあるかもしれませんがご了承ください&ご指摘いただけると助かります…。
ここでは、**シェルソート**を扱います。
参考にした本と記事はこちら
→https://www.codereading.com/algo_and_ds/algo/
→https://book.impress.co.jp/books/1118101057

# シェルソート
シェルソートは[挿入ソート](https://qiita.com/owo_comm/items/25193d9b557a4e03a5ba)をさらに効率化したものです。
一定間隔の要素ごとにソートを行い、間隔を狭めていくことで全体をソートしていきます。
あらかじめ配列の頭のほうに小さい数字が集まるので、挿入できた時点で終了する挿入ソートによって効率化が図れます。

## 手順
下手に私の書いた手順を見るより、この動画を見るほうが手っ取り早いです(クリックで見れます)。
[![シェルソート](http://img.youtu

元記事を表示

pythonで特定のフォルダ内のExcel一覧を再帰的に取得してExcelに書き出す。

“`python

# import libraries
import os
import pandas as pd
from glob import glob

# Configure Folder path
mybooks = glob(r”FOLDERPATH\**\*.xls*”,recursive=True)

df = []
for mybook in mybooks:
df.append([mybook,os.path.basename(mybook)])

# Exchange ListObject to Dataframe
df = pd.DataFrame(df)

# Dump to ExcelFile
outputFilename = “filename.xlsx”
outputFolder = r”filepath”
outputFileFullpath = outputFolder + “\\” + outputFilename
df.to_excel(outputFileFullpath,’List’)

print(
“ファイル

元記事を表示

pythonでソートアルゴリズム -挿入ソート

# はじめに
プログラミング初心者がソートアルゴリズムを自分なりに理解し、コーディングしてみたものの忘備録になります。
間違いもあるかもしれませんがご了承ください&ご指摘いただけると助かります…。
ここでは**挿入ソート**を扱います。
参考にした本と記事はこちら
→https://www.codereading.com/algo_and_ds/algo/
→https://book.impress.co.jp/books/1118101057

# 挿入ソート
元ある配列の頭から、新しい配列に並び替えつつ挿入していくソートアルゴリズム。
全比較を行うバブルソートや選択ソートと違い、**挿入できる箇所を見つければそこで終了**するので、**比較回数の平均値が少なく**なります。

## 手順

![各ソート.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614239/15abca80-b91a-eb61-c28f-120a717bd2d5.jpeg)

## 比較回数
### 最大値
“`mat

元記事を表示

Discord.py を使って、安っぽいLINEスタンプをつくるDiscordbotを作ったよ

#1.はじめに
情報工学を大学で専攻していますが、全然プログラミングわからないので、他人のコードをコピペして作りました。
じゃあ何故この記事を投稿しようと思ったの?というと、Discord.pyでプログラミング初心者が遊ぶ際に、遊び方を提示したいなと思ったからです(参考になるの?)
#2.参照元URL一覧
– [Discord Bot 最速チュートリアル【Python&Heroku&GitHub】](https://qiita.com/1ntegrale9/items/aa4b373e8895273875a8)
– [Pythonで実用Discord Bot(discordpy解説)](https://qiita.com/1ntegrale9/items/9d570ef8175cf178468f)
– [Pythonで画像に日本語文字を入れる。](https://www.tech-tech.xyz/drawtext.html#:~:text=pillow(PIL)%E3%81%AFPython%20Imaging,%E3%82%82%E7%95%A5%E7%A7%B0%E3%81%AF

元記事を表示

Fess の plug-in のサイトをxpathを使用して検索&表示してみる

#目的
Windows10 + Python3 + selenium + chromedriver + headless chrome で Fess の plugin 用のサイトをアクセスしてみる
Fessのメンテや新規インストール時にpluginのバージョンチェックが楽にできないかな?
とりあえずのテストコードを作成
※仕様は未定 plugin は決め打ちなので直接みに行けばいいんじゃないかと
[org/codelibs](https://repo1.maven.org/maven2/org/codelibs/)をローカルに保存してテストを行う
#サンプルコード

“`python
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

元記事を表示

素因数分解を利用せよ! ABC169 D問題「D – Div Game」

こんばんは Ruteです。
AtCoder Beginner Contest 169のD問題「D – Div Game」をACしましたので、
私がACをした解法の説明をしていきたいと思います。

## ABC169 – D問題「Div Game」
https://atcoder.jp/contests/abc169/tasks/abc169_d

### 問題概要:
正の整数$N$が与えられます。$N$に対して以下の操作を繰り返し行うことを考えます。
以下の条件を満たす正の整数$z$を選ぶ。
・ある素数$p$と正の整数$e$を用いて $z = p^e$と表せる
  ・$N$が$z$で割り切れる
  ・以前の操作で選んだどの整数とも異なる
・$N$を、$N/z$に置き換える
最大で何回操作を行うことが出来るかを出力せよ。

### 解法:
問題文を見ると、$N = p_1^{1} × p_1^{2} × p_1^{3}×…$
というように素因数分解できると考え、以下のアルゴリズムを考えました。
・$N$を素因数分解した結果をリストlsとおく。
・lsにおけるそれぞれの素数について、1

元記事を表示

Pythonでスクリーンショットを作成する

pythonで,デスクトップ画像の一部を別のプログラムに渡す用事ができたので作成.

##環境
Windows10

##動き
1. デスクトップの画像を保存して表示
2. ドラッグ&ドロップで範囲選択
3. 選択範囲した部分を切り抜いて保存

##コード

“`python_screenshot.pyw
import datetime
import os
from ctypes import windll
from PIL import Image, ImageGrab
import tkinter as tk

class CropScreenShot(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.flag = False
current_dir = os.path.split(os.path.abspath(__file__))[0]
self.s

元記事を表示

Python 3 varsの応用

Python 3.xの組み込み関数`vars`の応用的なコード集です。

## 辞書内包記法でコピーする

`vars`の戻り値は辞書なので`items()`と辞書内包記法でコピーできます。`items()`の要素(ここでは`item`)はキーと値のタプルです。

“`py
import sys
from pprint import pp

dict1 = {item[0]: item[1] for item in vars(sys).items()}
pp(dict1)
“`

“`plain:出力
{‘__name__’: ‘sys’,
‘__doc__’: ‘This module provides access to some objects …,

“`

注意:`vars`組み込み関数の戻り値は辞書型(``)です。要素(キーと値のタプル)を列挙するには`vars(sys).items()`とする必要があります。`for item in vars(sys)`とした場合は`vars(sys).keys()`として扱われ、キーの1

元記事を表示

PythonでBeep音を鳴らす(Ubuntu)

#pythonでBeep音を鳴らす(Ubuntu16.04)
pythonプログラムを起動してから何秒後かに
Beep音が欲しかったけど、なかなか鳴らせなかったのでメモします。
#環境
ubuntu 16.04
python 3.6

#プログラム
“`python
import os
import time
duration = 1 # seconds
freq = 440 # Hz

bool1 = True
elapsed_time = 0
while bool1:
start = time.time()
elapsed_time += time.time() – start
if elapsed_time >= 2.5:#各自調整
os.system(‘play -nq -t alsa synth {} sine {}’.format(duration, freq))
bool1 = False
“`
***
メモ程度です。。。もっと最適な方法があったら教えてください。

元記事を表示

ゼロから始めるLeetCode Day46「406. Queue Reconstruction by Height」

#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。

その対策としてLeetCodeなるサイトで対策を行うようだ。

早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。

せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。

[Leetcode](https://leetcode.com/)

[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)

前回
[ゼロから始めるLeetCode Day45 「1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree」](https://qiita.com/KueharX/items/013008af1

元記事を表示

【初心者】3日でPythonエンジニア認定基礎試験に合格した話

# まず初めに受験結果
2020年5月30日にPythonエンジニア認定基礎試験を初めて受験し、無事に合格しました。
その場で得点が開示されましたが、私は825点で合格しました。(1000点満点で700点合格)

以下の内容はいわゆる合格体験記的なものになっています。時間のある人だけ読んでください。

# 試験の感想
準備期間にDIVE INTO EXAMで模擬試験を受験しましたが、本番の試験は模擬試験の1.25倍ぐらい難しかったです。ただ、ネット記事でよく言われているような「模擬試験は簡単すぎる」というようには感じなかったのが正直なところです。

# 試験準備開始前の私
受験しようと思い立ったのは2020年5月26日のことです。もともとProgateでPythonは触っていたのですが、機械学習の方にどっぷり浸かってしまったことによって、思い立った時点ではProgateで学習したことすら怪しいレベルでした。(←ここ重要)

試験の申し込みは試験準備開始前に5月30日で申し込んでしまいました。私アホすぎ。

# 本題:試験準備のための勉強方法
さて、本題の勉強方法ですが使った教材は2つあ

元記事を表示

ちょっとよくわからないpipenvの使い方のまとめ(途中経過)

検証環境
Windows 10 1909
python 3.7.4
pip 20.1.1
pipenv 2020.6.2

Macでpyenvを使い慣れていたのでpyenv-winを導入しようかとも思いましたが、まだanacondaはインストールできないようですし、後からpipenvとpyenv-winを共存させておられる方もいらっしゃるようなので、まずは自分の機械でどう使うのか勉強してみました。

粗い使い方の流れは、pipfileという「仮想環境入場受付窓口」を通して出入りするという感じでしょうか。
Macのpyenvでは、teminal自体がワンストップ総合窓口となって「自分が使っているpyenvはどれだけありますか?pyenv versions 」と問い合わせると、作ったpyenvのリストを表示してくれて、

元記事を表示

【GetOldTweets-python】無料でTwitterの過去7日より前のツイートを取得してみる

#はじめに
研究のデータ収集のために大量のツイートを取得したかったのですが、Twitterの無料のSearch APIには
・180リクエスト/15分 かつ 100ツイート/1リクエストという取得件数の制限
・過去7日間分のみという取得対象期間の制限
があり、非常に不便でした。特に取得対象期間が過去7日間分のみなのがツラい…

有料のAPIを用いれば
・900リクエスト/15分 かつ 500ツイート/1リクエスト
・過去30日間分
まで機能を拡張できるのですが、その前に`GetOldTweets-python`と呼ばれるツイート収集用のパッケージ(無料)を見つけたので、まずこれを使ってみることに。

参考文献が少ないようなので記事にしました。

パッケージはこちら
https://github.com/Jefferson-Henrique/GetOldTweets-python

#環境
Ubuntu 18.04.2
Python3.7
Anaconda3 5.3.1
Jupyter Notebook

#準備
##インストール
Githubからパッケージをクローンした後、`Get

元記事を表示

pyenvにて、”zipimport.ZipImportError: can’t decompress data; zlib not available” で怒られた時

## タイトル通りpyenvで「zipimport.ZipImportError: can’t decompress data; zlib not available」とインストールができないとき BY.macOSCatalina

### 解決した内容から…
とりあえず、最終的な解決方法としては、下記の順番でインストールができた。
あと、コマンド実行時にもセキュリティが上がってるみたいで、自分の場合はアプリケーション自体の許可をした。
詳しくは、`設定>セキュリティ>プライバシー>デベロッパーツール`にある`ターミナルにチェック`を入れた。
その後、ちゃんとインストールができた。

“`
% brew reinstall zlib

% export LDFLAGS=”-L/usr/local/opt/zlib/lib”
% export CPPFLAGS=”-I/usr/local/opt/zlib/include”
% export PKG_CONFIG_PATH=”/usr/local/opt/zlib/lib/pkgconfig”

“`

他にも色々なサイトをみては

元記事を表示

Python3で二分探索

#授業だる&注意

アルゴリズムの授業で二分探索を書かされたので、Python3にて実装。
下の配列に対して破壊(要素の消去)を行なっているため、実際に使う際にはデータのコピーをして実行するか、left,rightなどの変数を用いて条件を変更した方が良さそう。
それと関数化したほうが便利よねって思ったけど、Pythonはinを用いれば検索できるし、アルゴリズムの練習でコード化しただけだし別にいいやってなりました、はい。

#ソースの解説

適当なlistを用意し、それを昇順にソートする。
探したい数値をsa_numに格納。
探索時に何度処理をしたかを数えるためにcntを使用。endは終了条件、sucは成功したかどうかのフラグとして使用。
endが0なら繰り返す
要素が1ならその要素だけ調べれば終わりなのでend = 1としてフラグ立てる。
そうでないなら、中央値を取得する。
中央値と探したい値が一致しなければ、中央値と探したい値の大小比較を行う。中央値の方が大きければ、探したい値は0からindexまでだから配列の右側(index~最後まで)は要らないので、スライスを用いて削除。逆に中央

元記事を表示

tensorflowのインポートエラー

# エラー内容
“`sh
Using TensorFlow backend.
Traceback (most recent call last):
File “C:\Python37\lib\site-packages\tensorflow\python\pywrap_tensorflow.py”, line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File “C:\Python37\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File “C:\Python37\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py”, line 24, i

元記事を表示

kerasの環境設定とtensorflow1.xのバージョンの問題について

環境:macOS catalina, pipenv, pyenv, vs code

Kerasの昔のサンプルコードを試そうと思って、詰まったのでメモ。
https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py
最近、kerasを始めた方だと、環境構築の情報やkerasの基本概念の說明用のサンプルコードが以前のままになっているケースがあるので要注意です。

#以前のKeras(TensolFlow1.x)
kerasは、以前、Tensorflow1.xをバックグラウンドにしてい動いており、
少し前のkerasのimportのコードは下記のような記述になっています。

“`python:python
import keras
“`

この記述でimportするためには、KerasとTensolflow1.x(最終盤は1.15)の両方をインストールする必要がありました。

“`terminal:console
pip install tensorflow==1.15
pip install keras

元記事を表示

OTHERカテゴリの最新記事