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

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

QGISにpandas&geopandasをインストールしたくないけど、機能は使いたい

# はじめに
この記事ではQGISのプラグイン開発を行うにあたって、
**「geopandasの機能が使いたいけど、ユーザーに煩雑なインストール作業を強いたくない!」**
という願いを叶えるための記事です。

ユーザーがインストール作業することに抵抗がない場合は、
以下の記事の方がスマートだと思います。

https://qiita.com/ozo360/items/87334983e7e9b95d50e9

# まず結論
先に結論を言いますが、この記事では
**pandas&geopandasの機能を使った処理のみをexe化して、プラグインからexeを実行させる**
という方法で実現しています。

「exe化はしたくない」という縛りがある場合、この記事では解決しません。
あしからず。

# 実行環境
– Windows10
– QGIS 3.16

# geopandasの処理をexe化する
### geopandas処理を含む部分だけを別ファイルにする
exe化をするにあたって、まずはgeopandasの機能を使っている処理を
関数にしておき、別のpyファイルに保存します。
この時

元記事を表示

eval関数を使わずに四則演算式を解く

# はじめに
タイトルにある通りです。
少しだけ詳しく解説します。
最初はeval関数を全く知らず、知ってる知識だけで解いてみようと思ったのがきっかけです。
プログラムが完成した後、どんなアルゴリズムがあるのかなって調べてみたらeval関数なるものを見つけて、あまりにも簡単に答えが出せてしまったので笑ってしまいました。

# 問題
以下の計算式が文字列として与えられたとき、解を求めよ。

“`
‘(((3+1+6+2+3+1234+234+8)/3)+2*235-442+2312)/9+6*(3)+(1+1+1*5/90)=’
“`

# 回答プログラム
### 割り算を掛け算に、引き算を足し算に
与えられた式を一つずつ見ていき、以下の表のように対応します。

|変換前の四則演算記号|変換後の四則演算記号|備考|
|:—:|:—:|:—|
|/|*|変換後の数字は分数にする|
|-|+|変換後の数字の前に「-」をつける|

“`python
def chg_subtosum_divtomul(formula):
tmp_list = []
tmp_nu

元記事を表示

Pythonで音付き動画を作る方法

# Pythonで音付き動画を作成
Pythonで音付きの動画を作成する方法です。なかなか調べても出てこなかったので、ここでまとめておきます。

## 候補1: opencv

pythonで動画や画像を扱うとき最も一般に使われるものは、おそらくopencv(cv2)だと思います。しかし、どうやらopencv単体では音声付の動画を作成することはできなさそうです。

## 候補2: pyav

音付きの動画から、以下のコードで音声つき動画を作成することが出来ました。
以下は[公式サンプル](https://pyav.org/docs/develop/cookbook/basics.html)を少し改変して音声付き動画を作るように変更したものです。

“`python
import av
import av.datasets
import numpy as np

input_ = av.open(“./videos/01_smile.mp4”)
output = av.open(‘./videos/sample02.mp4’, ‘w’)

# Make an output strea

元記事を表示

【 Tello 】右斜め前や、右斜め前上方への直進は、RCコマンドが吉

TelloのAPIには、*left*, *right*, *forward*, *back*, *cw*m *ccw* 等の操作コマンドとは別に、*rc*というコマンドがあります。

– [(参考) Tello操作コマンド 日本語版 「Drone an どろね庵」](https://drone-an.pro/tellosdk_trans/04_tello_commands/)
– [TELLO SDK 2.0 User Guide](https://dl-cdn.ryzerobotics.com/downloads/Tello/Tello%20SDK%202.0%20User%20Guide.pdf)

これは、__*rc 左右 前後 上下 ヨー角*__という__4つの引数__をとります。

このコマンドを使うと、これまで、次の図の左側のように、Telloを操作していた世界から、右側の世界に移行することができます。

![スクリーンショット 2021-07-14 17.59.18.png](https://qiita-image-store.s3.ap-northeast-1.ama

元記事を表示

インスタをPythonで自動化してみる

#目標
インスタのアカウント育成を自動化したい

#インスタ 自動化 Python
これで検索するとこちらの記事が出てきました。

https://oretano.com/instagram-python-like

自動でいいねしてくれるプログラムです
今回はこれを元に

– 自動いいね(ちょっと改良)
– 自動フォロー
– フォロバされてない人の自動フォロー解除
– 自動ブロック

を作っていこうと思います。

必要な準備は上記のサイトにすべて記載されてるのでこちらには書きません

#自動いいね(ちょっと変えました)

“`
from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.action_chains import ActionChains
import time
import random, sys

def login():
driver.get(‘https://www.inst

元記事を表示

`python3 -m pip install PyQt5`実行時にエラー

`python3 -m pip install PyQt5`実行時にエラー

“`
$ python3 -m pip install PyQt5
Collecting pyqt5
Using cached https://files.pythonhosted.org/packages/8e/a4/d5e4bf99dd50134c88b95e926d7b81aad2473b47fde5e3e4eac2c69a8942/PyQt5-5.15.4.tar.gz
Installing build dependencies … done
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File ““, line 1, in
File “/home/ubuntu/.pyenv/versions/3.6.9/lib/python3.6/tokenize.py”, line 452,

元記事を表示

ドローン・プログラミングでTelloを無人自動飛行してみた(Python3)

__[前回の記事](https://qiita.com/electronics_diy721/items/f9f4b1f87e83801154e9)__の続編です。

###全体の構成

![スクリーンショット 2021-07-13 16.03.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1754134/74306c50-bbb4-4584-0fab-d4f31dcbc147.png)

前回は、MacbookのTerminalに、人間が手入力で”takeoff”, “forward 100”, ・・・, “land”と、Tello APIで提供されているコマンドをひとつひとつ入力していました。

MacbookからWifi通信でTelloに命令を送れるようになったものの、これだと、同じくWifi通信で、iPhone/ iPadの画面に表示されたバーチャル・ジョイスティックで操作した方が、操作しやすいです。

そこで今回は、一連の飛行動作を、あらかじめスクリプトに記述(列挙)して、人間は手放し

元記事を表示

Django でモデルフィールドの値を暗号化してくれる EncryptedField を作成する方法

##はじめに
業務でDjangoで作ったシステムのデータを暗号化してDBで保管するという
タスクに携わったので、その方法を記事にしたいと思います。

###この記事で触れること
* Modelの値を暗号化してDBに保存してくれるEncryptedFieldの作り方
* 既存のデータの置き換えについて
* マイグレーションの挙動について

###この記事で触れないこと
* Pythonで暗号化をする方法
* saveメソッドを継承して暗号化をする方法

###環境
Django3.0.1
python3.9
暗号化ライブラリ: PyCryptodome

##結論と説明
こちらがメインのコードです。
encryption decryptionは暗号化・複合化の関数となります。

“`python:myfield.py
class EncryptedFieldMixin:
“””
Djangoのモデルフィールドを、DB登録時に暗号化するように
変更するMixin
戻り値が str のため、models.BinaryFieldなどには使えない
“”

元記事を表示

Python ランダムな数列を作成する方法。重複有無、全列挙

## 指定した範囲を列挙する

rangeを使えば、範囲の数列を作ることができます。

“`py
lst = list(range(0, 10))
print(*lst)
# 0 1 2 3 4 5 6 7 8 9
“`

## 指定した範囲から、重複のないランダムな数列

random.sampleを使用して、重複のないランダムな数列を作れます。

“`py
import random

lst = list(range(0, 10))
print(*random.sample(lst, len(lst)))
# 8 9 7 6 0 3 1 2 5 4

# 別の書き方
lstlen = 10
print(*random.sample(list(range(0, 10)), lstlen))
“`

## 指定した範囲から、重複ありでランダムな数列

“`py
import random

lst = list(range(0, 10))
print(*random.choices(lst, k=len(lst)))
# 2 4 7 5 6 1 7 9 3 2

# 別の

元記事を表示

Pythonで複数のDataFrameをExcelにシート別にfor文を使って出力してみる

### DataFrameが複数存在した場合にエクセルにシート別で出力できるのかなという疑問から

– VBAしか触ったことがなかったのですが、多岐に自動化できるようになってみたい思いからpythonプログラミングの独学を始めてみて3か月ちょっとの者です。
– コロナ関連の各自治体が出している報告pdfをtabulaで取得してdfに格納していくことに楽しさを感じたので ついでにExcelにシートごとに出力する方法を調べてみたいなと思いながらも調べ方が悪く適当な方法を見つけられずにいましたがもう一度資料参考をしながら作成してみたところうまく出力されたので自分の覚書も兼ねて投稿します。

##### 環境
– windows10 pro 64
– python 3.9
– tabula-py 2.2.0
– pandas 1.3.0
– jupyter-lab 3.0.13
– Excel2019

### コード

“`python

import pandas as pd

#あとでファイル管理がしやすいように変数日付4桁を作成
datestr = input

元記事を表示

MacBookのTerminalに、Telloの操縦コマンドを手入力して遠隔操作してみた

###参考にしたサイト

– [縣 佳男 (株式会社日本システム技研) 「Pythonからドローンを操作してみる話。」](https://www.wantedly.com/companies/jsl2/post_articles/184669#_=_)

###全体の構成

![スクリーンショット 2021-07-12 14.53.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1754134/b43ae4ad-6908-6217-eaec-d37f571d0ca0.png)

####( ① TelloとMacbookとのWifi疎通確認 )

– Wifi親機(Host): Tello本体 (※)
※ Tello本体内には、Wifiルータが標準仕様として内蔵されている

– Wifi子機(Client): MacBook
– MacBookのWifi接続先一覧から、Telloのアクセスポイント(AP ※)を探して、選択。
※ Tello内蔵のWifi APの(local) IPアドレスは、$

元記事を表示

【AtCoder】ABC209をPython3で解説

ABC209の解説。

https://atcoder.jp/contests/abc209

## A – Counting
### 解説
$A$以上かつ$B$以下の整数はいくつあるか。

そもそも$A$が$B$よりも大きかったら、満たされる数がないので$0$を出力。

$A$以上かつ$B$以下なら、整数の個数は、$B$から$A$を引いて$1$を引いた数。

### コード
“`python
a, b = map(int, input().split())

if a > b:
print(0)
else:
print(b-a+1)
“`

## B – Can you buy them all?
### 解説
所持金$X$円で、$N$個の商品を買うことができるか。なお、$A_i$で$i$が偶数のときは、1円引きで商品が買えるものとする。

偶数のときに1円引きされるので、$N$個の商品の合計金額から、偶数の数ぶん1円引いてやれば良い。

### コード
“`python
n, x = map(int, input().split())

alist = lis

元記事を表示

[Python3] Apple Silicon M1 にてgrpcioのインストール時にエラーが発生する問題の解決

## 事象

“`bash
pip install grpcio
“`

## エラーログ

“`python
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -D_WIN32_WINNT=1536 -DOPENSSL_NO_ASM=1 -DGPR_BACKWARDS_COMPATIBILITY_MODE=1 -DHAVE_CONFIG_H=1 -DGRPC_ENABLE_FORK_SUPPORT=1 -DPyMODINIT_FUNC=extern “C” __attribute__((visibility (“default”))) PyObject* -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 -Isrc/python/grpcio -Ii

元記事を表示

Twitter Botで長い文章をツイート可能ギリギリの長さに調節する

# はじめに
TwitterのBotを作っていると、ツイートしようとしたときに次のようなエラーが返ってくることがあります。

“`text
[{‘code’: 186, ‘message’: ‘Tweet needs to be a bit shorter.’}]
“`

これは、Twitterの文字制限をオーバーしている、というエラーで、
日本語では140文字、英語だと280文字までしかツイートできません。
さらに、urlは22文字として換算される、とか、まあいろいろな例外もあるのですが、
そのような解説は[他の記事](https://qiita.com/PND/items/17e87b8839c9099d2e70#url-%E6%8A%BD%E5%87%BA)に譲るとして、
実運用ではどのようにして文字数制限を回避すればよいでしょうか。

例えば、青空文庫に掲載されている、日本の名作とその書き出しをツイートするボットを開発する場合、
下の画像のように、書き出しを制限ギリギリにする方法を本記事では紹介します。

![image.png](https://qiita-image

元記事を表示

pyinstallerのメモ

## 作成するときは仮想環境で

普通に作成したらexeの実行から動き出すまで、
10秒以上かかりフリーズしたのか心配になりました。

仮想環境を作成してそのままexeファイルを作成すると
必要なライブラリのフォルダが少なくなるのか軽くなりました。

参考
https://qiita.com/plumfield56/items/3296b24fea4ea5bbbbcf

## pandasを使うときは–hidden-importオプションをつける

この記事を参考にしました。
https://stackoverflow.com/questions/47318119/no-module-named-pandas-libs-tslibs-timedeltas-in-pyinstaller

私の場合は下記のエラーが表示されました。

“`
no module error named ‘pandas._libs.tslibs.base’
“`

なのでexeファイルを作成時に下記のコマンドへ変更したら問題なく動くようになりました。

“`
pyinstaller –onedir

元記事を表示

仮想環境の作り方

何度か目のチャレンジです。
Anaconda Promptを使ってvenvで仮想環境を作っていきます。

実行環境はWindows10で、MacやLinux環境だとvenvで作られるファイル名や
仮想環境への入り方が異なるみたいです。

## 仮想環境の作成

参考の公式サイト
https://docs.python.org/ja/3/library/venv.html

まずは仮想環境を作りたいフォルダまで移動します。

“`bash:ディレクトリの移動
$ cd パス
“`

そこで仮想環境を作成します。

“`bash:envという仮想環境に必要なファイルが入ったフォルダを作成
$ python -m venv {ファイル名}

# 例
$ python -m venv env
“`

すると今いるディレクトリにenvフォルダが作成されます。
Windowsの場合は下記で仮想環境に入ります。

“`bash:仮想環境に入る
$ .\env\Scripts\activate
“`

下記の表記に変われば成功です。

“`
# 仮想環境前
(base) C:ディレクト

元記事を表示

Django REST frameworkのユニットテスト

単体テストをExcelとかに絶対に管理したくないマンなのでテストの機能が備わっているものなら是非とも使いたい。
Pythonもとい、Djangoにもしっかりテストの機能はついている。

もちろんDjangoのテストの記事なんていっぱいあるのだが、どれを真似してもなんかAPIが上手く動かない…

冷静に考えたらREST framework使っているのに普通のDjangoのテストを参考にしても上手くいかないよね。
というわけで個人的な備忘録として記載していく。別に[公式ページ](https://www.django-rest-framework.org/api-guide/testing/)をつど見るのもいいんだけど~~英語ってあんまり読みたくないじゃん~~
一応ソースも[github](https://github.com/always-reach/django_unittest)で公開中

モデルの準備

とりあえずモデルを準備

“`models.py
class SampleTable(models.Model):
name = models.Cha

元記事を表示

Django初心者がつまずいたmodelsを変更した際にmigrateができない!?

環境
macOS Big Sur
python 3.8.5
django version 3.0.5

Djangoでデータベースを作成する際に便利なmodelsですが、変更や修正を加えた時にちょっと難しいなと思った場面があったので記事にまとめてみました。

まず現在のテーブルに入ってるカラムに新しいカラムを追加をする更新は簡単にできるみたいなのですが、
現在のテーブルにあるカラム自体に変更を加えると何やらめんどくさいことになるようです。
(例えばカラム名を変更したり、カラムのfieldを変更したり)

※詳細はこちらのサイトをご参考ください

なので大胆に仕様変更する場合には一度migrationフォルダにあるinitial.pyを削除してmakemigrationsした方が早いことが分かったのですが、ここで問題が発生!

makemigrationsはできるけど…migrateができません…
![スクリーンショット 2021-07-10 19.37.29.png](htt

元記事を表示

Pythonのos.listdirを使ってフォルダ内のファイルリストを取得する

今回はglobではなくos.listdirでファイルリストを取得する方法を紹介します。
最後にも紹介しますが、この関数とwxPythonを組み合わせてファイルマネージャーをつくることができます。
https://programming-self-study.blogspot.com/2021/06/wxpython-filem.html
#コード

“`Python:sample.py
import os
filelist = os.listdir(“C:\\Users\\”)
for file in filelist:
print(file)
#.NET v2.0
#.NET v2.0 Classic
#.NET v4.5
#.NET v4.5 Classic
#All Users
#Classic .NET AppPool
#Default
#Default User
#DefaultAppPool

元記事を表示

pythonを便利に使おう第四回!行列編!

#初めに
 数学の歴史には表現の秀逸さを整える歴史とも言える部分が多くあります。その中で私が好きな要素を上げるとすれば、自然対数e、虚数i、そしてlogです。…行列はこの中には特に入ってなかったのですが、ビッグデータを解析したいというときには、行列の内積を使いたいなとなりましたので、今回は行列についてpythonで勉強して行こうと思います。

#第8章「行列」の問題
 というわけで今回例題として使わせていただくのはこちら!
>http://web.sfc.keio.ac.jp/~kawazoe/math/book/d-chap8.pdf

Google先生で数学 行列 問題で調べれば一番上に出てきました。この中から適当に問題をセレクトして解いていこうと思います。
##第一問 行列の計算

“`math
3
\left(
\begin{matrix}
1 & -3 \\
2 & -4
\end{matrix}
\right)
-2
\left(
\begin{matrix}
5 & 6 \\
7 & 3
\end{matrix}
\right)
“`

pytho

元記事を表示

OTHERカテゴリの最新記事