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

Python3関連のことを調べてみた2021年08月04日
目次

Python3でbasemapをインストールする際に出力されるエラーへの対処

# basemapのインストール

地理データなどを表示するために役立つbasemapは[ここから](https://github.com/matplotlib/basemap)ダウンロードできる。
しかし、basemapを使用する際に必要なlibgeosをビルドする際に問題が起きる。

basemapのリポジトリのREADEME.mdのインストール方法は、以下のように掲示されている。

“`sh
cd geos-3.3.3
./configure –prefix=$GEOS_DIR
make; make install
“`

2行目まではパスするが、3行目でマクロに関するエラーが出力される。
このエラーには、環境変数のCXXにコンパイラの情報を設定することで解決できる。

“`sh
export CXX=”g++ -std=c++98″
“`

## matplotlibの呼び出し

再度インストールを実行しようすると,今度はmatplotlib関連のエラーが出力される。
このエラーには、以下のコマンドを入力することで対処できる.

“`sh
pip install

元記事を表示

Pythonで九九表を一行で作る

# 概要
プログラミングのテスト前日、Pythonのテキストにある演習問題にこうあった。
> 次のような九九表を作成してみよう

“`
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
“`

コードゴルファー(クソ弱い)としてはこれを一行で書いてみたい。
というか書けるの、これ?ググってもだれもやってない。

だったらやるしかないじゃない。
明日がテストなので足早に、テンション高めで書いていきます。

……ということで完全にネタです。
個人の趣向ですが、フォーマッタは使用します。
普通に書いたほうが短いとかいうツッコミはNGです。

# 実際に書いたコード

実際に考えたのは次のような

元記事を表示

pythonの業務自動化で東京オリンピックメタル情報を毎日受信してみましょう

## 当記事で実現していること
– webから毎日のオリンピックメタルランキング(TOP10)の情報を取得する
– 取得した情報はEXCELに保存する
– オリンピック開始日から当日分のメタルランキング(TOP10)をEXCELから取得する
– 当日のメタルランキング(TOP10)をグラフで表示する
– メタルランキング(TOP10)の毎日のメタル推移をグラフで表示する
– 当日のメタルランキング(TOP10)の情報、上記作ったグラフを毎日一定時間に自動でメールでお知らせする

## 当記事で共有する機能
– pythonでWEBからデータ取得
– pythonでEXCELにデータ書き込みとEXCELからデータ読み取り
– pythonで表データをグラフで表示する
– pythonでメール送信する「添付ファイルなし」
– pythonでメール送信する「添付ファイルあり」
– windowsのスケジューラの使い方

## 早速作りましょう

### 必要なライブラリ
“` tokyo2020.py
# 使てない物もあるかもしれません
import sys
from datetime

元記事を表示

【Python3】opencvで出来るだけ品質を落とさずresizeする【初心者向け】

cv2.resizeをデフォルト設定で行うと、画像の品質が劣化する。

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) → dst

画像の縮小には interpolation=INTER_AREA、拡大には INTER_CUBIC(処理遅め)、またはINTER_LINER(速くて見た目もよい)を使用すると良いようだ。

イラストだと劣化がわかりにくいため、文章のファイルを使用する。
試しに「吾輩は猫である」の冒頭をスクショ。画像として保存。

https://www.aozora.gr.jp/cards/000148/files/789_14547.html

### オリジナル画像(shape=(1590, 2621, 3))
![neko.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

元記事を表示

【Mac】cv2のImportError(Reason: image not found)

### エラー内容
“`
ImportError: dlopen(/Users/user/venv/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so, 2): Library not loaded: /opt/homebrew/opt/ffmpeg/lib/libavcodec.58.dylib
Referenced from: /Users/user/venv/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so
Reason: image not found
“`

### 環境
+ homebrew 3.2.5
+ python 3.8
+ venv

### 状況

仮想環境上にてpipを使用しopencvをインストール後、importした時にエラーに遭遇

“`
$ pip install opencv-python
$ python3
$ import cv2
“`

### 解決策(備忘録)
ターミナルを開き、homebrewを使って

元記事を表示

FastAPI × Stripe サブスクリプション登録を試す

## はじめに
サブスクリプション課金を行う際、Stripeを利用すると比較的簡単に課金が行えますが、DB上にある顧客の情報を使いたかったり、すでにサブスクリプション課金が行われている顧客に再度登録が走らないようにしたいなどの理由で、バックエンド側のAPIサーバーを絡めるケースはあるかと思います。

Stripeでサブスクリプション登録をするためには、以下3つの作業が必要になります。
1. Planを登録する
2. Customerを登録する
3. Subscriptionを登録する

これら3つについて、FastAPI経由での実装を試してみました。

## 事前準備
### FastAPI
[FastAPI公式](https://fastapi.tiangolo.com/ja/#_3)に従いアプリケーションの準備を行います。

### Stripe
[Stripe公式](https://stripe.com/jp)にてアカウント登録を行います。

登録を行うと、テスト環境が利用可能となります。
また、ダッシュボードの「商品」タブから商品登録を行います。この際料金情報の登録は不要です

元記事を表示

挿入順を覚えている連想配列

# これは何?

Ruby の Hash には shift があることの紹介。
と思って調べたら、 Python3 の `dict` にも順序があるのがあったので、それも紹介。

# Ruby の Hash

Ruby の Hash は挿入順を覚えている。
挿入順を利用して古いものから順に取り出せる。
以下のような感じ。

“`ruby:ruby
h={foo:111,bar:22,hoge:3}
h[:bar]=44
h[:baz]=55
s=””
while ! h.empty? do
s += h.shift.inspect
end
p s #=> “[:foo, 111][:bar, 44][:hoge, 3][:baz, 55]”
“`

先頭の値を見る `first` と、先頭の値を撤去する `shift` はあるけど、末尾を扱う `last` と `pop` は無い。

“`ruby:ruby
{a:1}.first #=> [:a, 1]
{a:1}.last #=> NoMethodError: undefined method `last’
{a:1}.

元記事を表示

[Python]等差数列×等比数列の解を求めてみた[備忘録]

# はじめに
Pythonでコーディングを行ったので、備忘録として残します。
Python環境下にて、是非お使いください。

# コーディング
“`py
#sympy内の関数を使用
from sympy import *
n=Symbol(“n”)
a,b,c = map(int,input(“a,b,c=? ? ?”).split())
while c==0:
print(“Input a,b,c except c==0”)
a,b,c = map(int,input(“a,b,c=? ? ?”).split())
Prog = sequence((a*n+b)*c**n, (n, 0, 20))

#以下、出力(例:a,b,c=1 1 2)
print([int(N) for N in Prog])
print(Prog[3])
“`
>出力結果
[1, 4, 12, 32, 80, 192, 448, 1024, 2304, 5120, 11264, 24576, 53248, 114688, 245760, 524288, 1114112, 2359296,

元記事を表示

Pythonにおける.gitignoreに追加するべきファイル

# .gitignoreファイルとは
Gitの管理下から除外するファイル・フォルダを指定するファイルのこと。
commit内容をできるだけ汚さない為に、ローカル環境(自分のPC)だけに
必要なファイルを追加する。

## Gitの管理下から除外推奨のファイル・フォルダ例
各言語における除外すべきファイル・フォルダは公式サイトを参照。

https://github.com/github/gitignore

### Python
https://github.com/github/gitignore/blob/master/Python.gitignore

+ PyCharmのキャッシュファイル
+ venvの仮想環境フォルダ
+ jupyter notebookのチェックポイントフォルダ

など、うっかりcommitすると怒られるので要注意

元記事を表示

mac pyenv 環境でtkinterがnomodulenamedになる時の対処法

macでtkinterをinstallしても起動せず、いろいろ格闘した末に起動できたので、どうやって解決したかをまとめてみた。

#使用していた環境・バージョン
・macos mojave (10.14.6)
・pyenv 2.0.4
・tcl-tk 8.6.11 (bottled)[keg-only]
・python3.9.6

#結論
`$ brew install tcl-tk`,
`$ brew install python`した後に
`$ brew install python-tk`を入力

#症状
python3.9.6を使用。tkinteを使うために以下のようなコマンドを打つとエラーが発生。tkinterはpythonの標準ライブラリのはずなのになぜか起動しない。原因はtcl-tkがパソコンに入っていないことらしいが、最後までイマイチよくわからなかった。

“`
$ python3 main.py
(中略)
Traceback (most recent call last):
(中略)
import _tkinter # If this fails your

元記事を表示

大谷選手がホームランを打ったことをLINE通知してみた。

##はじめに

大谷選手の活躍が目覚ましいですね!!
普段野球はほとんど観ない私ですら、ついついホームランを打ったかどうか、結果が気になってしまいます。

しかし、結果は気になるものの、
・試合日程は把握していない
・そのため、適宜Yahoo!ニュースをチェックして大谷選手がホームランを打っていないかチェックする
という状態であり、段々とチェックするのが面倒になってきてしまいました。
(試合日程を確認すればいいだけなのですが・・・)

そこで、大谷選手がHRを打ったことをLINE通知する仕組みを作ってみました。

↓マーベラス、オオタニサン!!

## 通知内容

通知内容は
・大谷選手がHRを打った旨のメッセージ(1パターンのみ)
・画像
・Yahooの記事
の3点です。

【Python】よく使いそうな書き方まとめ

## はじめに

Python勉強中です。
よく使うであろう、もしくは使いそうな書き方を備忘録としてまとめます。

## 文字列関連

### 文字列の演算
“`python
book = ‘book’
print(book * 4)
“`

bookbookbookbook

### bool型への変換

“`python
print(bool(”))
print(bool(‘bool’))
print(‘oo’ in ‘bool’) # ‘oo’が含まれている事を確認
print(‘x’ not in ‘book’) # ‘x’が含まれていない事を確認
“`

False
True
True
True

### format

“`python
a = ‘Python’
b = ‘YEAR!!’
print(f'{a}, {b}’)
print(‘{}, {}’.format(a, b))
“`

Python, YEAR!!
Python, YEAR!!

### パディング

元記事を表示

Pandas DataFrameをリストに入れて都合よく使っちゃおう

本日、私的には大変ありがたい学びがあったのでここに記すことにしました。

タイトルに示した通り、リストの中にPandas DataFrameを格納して必要に応じて呼び出して使うことができました。
また、リストに入れたDataFrameの名前は同一のもので良いことが大変ありがたいと感じました。

素人の私はpandasでDataFrameを作るたびになんだかよくわからないDataFrameの名前を用意してdf1,df2・・・などと名前を変えて作成しておりました。それが、listに格納する順番が決まっている場合はわざわざdfにまどろっこしい名前をつけることなく、リストから呼び出すことが可能です。
文で説明するのも大変なのでコードを示します。

例えば以下のように変数名が一緒で中身のみ違うdfを用意して、
リストにappendを繰り返すとlistにデータフレームを格納することができています。

“`py
dflist = []
df = pd.DataFrame([1,2],[3,4])
dflist.append(df)
df = pd.DataFrame([5,6],[7,8])
df

元記事を表示

pythonでsqliteを利用しようとしたら、AttributeError: ‘builtin_function_or_method’ object has no attribute ‘execute’とエラーが出た。

# エラー発生時の状況
sqliteを利用して、入力した文字を検索する辞書アプリを作成していたところ、下記のエラーが発生した。

# エラー文
“`
DEPRECATION WARNING: The system version of Tk is deprecated and may be removed in a future release. Please don’t rely on it. Set TK_SILENCE_DEPRECATION=1 to suppress this warning.
Exception in Tkinter callback
Traceback (most recent call last):
File “/Users/{user名}/.anyenv/envs/pyenv/versions/3.9.1/lib/python3.9/tkinter/__init__.py”, line 1884, in __call__
return self.func(*args)
File “/Users/{user名}/Desktop/ejdi

元記事を表示

Pythonのwindllでメッセージボックスを使いこなす

今回はPythonのwindllを使ってメッセージボックスを表示させます。
tkinterやwxPythonを使わない方法です。
まぁtkinterやwxPythonを使った方が簡単なので、今回の記事はあんまり需要はないと思いますが…

tkinterやwx向け↓
wxPythonでメッセージボックスを表示させる
Tkinterでメッセージボックスを表示させる -メッセージボックスをフルに使う-

っで、windllなのでWindowsじゃないと実行できません!

Macとかではエラーになると思うので。

#サンプルコード

“`Python
import sys
from ctypes import *

user3

元記事を表示

Garmin fit形式ファイルの解析手順

## はじめに
Garminなどで計測したデータをフルに活用するには、fitファイルとして出力されたデータを解析する必要があります。hiking時のデータを事例にfit形式ファイルを解析する方法をまとめました。

## 1. fitparseライブラリをインストールする

“`python
!pip install fitparse
“`

https://github.com/dtcooper/python-fitparse

“`python
import numpy as np
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import os
import fitparse
“`

# 2. fit形式ファイルを読み込む

“`python
fitfile = fitparse.FitFile(“./xxxxxx/xxxxxx_ACTIVITY.fit”)
fitdata

元記事を表示

Pythonで始めるwebスクレイピング_[1]導入編

## Pythonを導入から
過去に業務でPythonを使用したことはあったのですが、しばらくの間離れていたところ、ほとんど最初から学び直す羽目になりました。
会社の都合で使用する機会がありそうなので、触ってみることにしました。
ただ言語を学ぶのだと面白く無さそうなので、ついでにwebスクレイピングやクロールをしながら学んでいこうと思います。

### 実行環境
pythonは2系がサポート終了するので、3系でやることにします。
2系の経験がある方は2系と3系の違いは以下のようなまとめてくれている記事を参照するといいと思います。

* https://www.python-izm.com/tips/difference_in_version/
* https://qiita.com/cstoku/items/353fd4b0fd9ed17dc152

## スクレイピングのための道具を準備する
まず手始めに[こちら](https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406)を参考にスクレイピングをやってみます。
pythonと

元記事を表示

Scrapy – Spiderに渡す引数のうち__init__関数内で利用するものでも初期化宣言が必須ではなかった

#結論
ScrapyのSpiderに渡す引数(Argument)は「\_\_init\_\_」関数内で利用するものは初期化宣言が引数の渡し忘れに備えて推奨されています。
以下のサンプルプログラムでいう、feedは`def __init__(self, feed=None, *args, **kwargs):`にてfeed=Noneが初期化宣言です。検証した結果、これがなくても動作でき必須ではありませんでした。ただし**self.feed**としてクラス変数を参照する必要があります。
(Scrapy 2.5.0で検証)

##経緯
Spiderに渡す引数の取り扱いにわかりにくいところがあったので残します。
公式のチュートリアルでも「\_\_init\_\_」関数内で受け取る引数には初期化宣言がついているのですが、
これが他のインスタンス関数では不要で場合分けが必要だと思ったので調べました。

##検証
qiita.comのfeed部分と任意messageがSpiderの引数になっているサンプルプログラムを例にします。
レスポンスのparse部分やmiddleware, pipeline処

元記事を表示

Telloプログラミング:data, server = sock.recvfrom(1518)のdataの中身を覗いてみた

Telloプログラミングの中で、TelloとMacbookとの通信経路を確立する部分の定番コードは、次のようなものです。

“`python3:
data, server = sock.recvfrom(1518)
“`

ここで、返り値を受け止める__*data*__変数に、どのような値が入るのか、興味を持ちました。
この変数の中身を、Terminalに出力して確認してみました。

__[前回の記事](https://qiita.com/electronics_diy721/items/df5235c692a84867cd60)__を改良してみました。ソースコードの全体は、この記事の最後に掲載してあります。

###コード改編部分

>以下を追加(2021/7/28)
>dataはバイト列(例:b’\x 16指数表記データ’)だから、str型に変換するにはdecodeが必要
>received_data = data.decode(‘utf-8’)
>print(“Telloからの返り値: ” + received_data)

“`python3:コード該当箇所1
def

元記事を表示

Telloから送られてくるデータをMacbook側で受信して、Terminal表示してみた

__過去に作成した次の記事__では、TelloにWifi接続したMacbookのTerminalに、Telloの操縦コマンドを打ち込み、Telloを遠隔操作しました。

– __[MacBookのTerminalに、Telloの操縦コマンドを手入力して遠隔操作してみた](https://qiita.com/electronics_diy721/items/f9f4b1f87e83801154e9)__

今回は、TelloからMacbookに向けて送られてくる、Telloの状態に関する信号を(Macbook側で)しっかりと受け止めて、MacbookのTerminalに出力する機能を追加してみました。

今後はさらに、Telloに搭載されている単眼カメラから送られてくる画像データも、Macbook側で受信して、ウィンドウに出力表示する機能も盛り込んでいきたいと思います。その際、Tello-PythonやTelloPyといったライブラリを使わずに、Macbook側でポート 11111のUDPサーバを立てて、OpenCV2のimshowメソッドで画像フレームをリアルタイムに表示する部分を、フ

元記事を表示

OTHERカテゴリの最新記事