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

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

pip listのWARNINGを消す

# 状況
pip listの照会をすると以下の**WARNING**が十数件表示された。

“`
hogehogeiMac ~ % pip list
WARNING: Ignoring invalid distribution -yping-extensions (/Users/hogehoge/.pyenv/versions/3.7.7/lib/python3.7/site-packages)
“`
警告:(/Users/hogehoge/.pyenv/versions/3.7.7/lib/python3.7/site-packages)にある-yping-extensionsと言うdirectoryは”無効なため配布を無視します”(Google翻訳)という意味らしい。
※ちなみに”hogehoge”は私の名前を隠しています。

# 原因
netで色々調べると、「要らないDirectoryが残っていて、邪魔をしている」らしい。
ちなみに、 ターミナルで /Users/hogehoge/.pyenv/versions/3.7.7/

元記事を表示

pythonのfomatで分割して代入/別々に代入/段階的に代入

#やりたいこと

pythonの文字列処理でformatというのがあります。
例えば、

“`python:test1.py
format_str = “My name is {name}. I am from {place}. Nice to meet you.”

what_to_say = format_str.format(name=”Bob”, place=”Beppu”)
print(what_to_say)
“`

“`text:実行結果
My name is Bob. I am from Beppu. Nice to meet you.
“`

となります。

ただ、以下のようにするとエラーが出ます。

“`python:test2.py
format_str = “My name is {name}. I am from {place}. Nice to meet you.”
what_to_say = format_str.format(name=”Alice”)
what_to_say = what_to_say.format(place=”Tsugar

元記事を表示

PEP 657 (Include Fine Grained Error Locations in Tracebacks) を読んだよメモ

先日、[PEP 657 (Include Fine Grained Error Locations in Tracebacks)](https://www.python.org/dev/peps/pep-0657/) が [Final になったという PR](https://github.com/python/peps/pull/2032) を見かけました。
そして、cpython に実装が取り込まれていることが確認できたので、あらためて紹介しようと思います。

## 概要

* 1行で複数の処理をしている箇所でエラーが発生した際に、どの処理でエラーが発生したのか表示する
* 表示を改善するため、Python のバイトコード命令(bytecode instructions)に(行番号に加えて)オフセット情報を追加する
* バイトコードのサイズが約 20% 増加する (標準ライブラリでの計測値)。.pyc ファイルと消費メモリに影響する
* 環境変数 `PYTHONNODEBUGRANGES` やコマンドラインオプション `-Xno_debug_ranges` で無効化できる

## ア

元記事を表示

Python フォルダ内のファイル名を一時的に変更して、処理を行ってから、元のファイル名に戻すプログラム

# 最初に
初投稿です。不備があればすみません。ちょっと丁寧な備忘録程度で投稿しています。

決まったファイル名の画像しか受け付けないAPIがあり、画像の名前を「××.jpg」に変更してから投げる必要があったのですが、流石に何十枚も画像があると手動で名前変更してAPIに投げて……は面倒……。
かといって、同一フォルダに同じファイル名のものは置けないし……。

ということで、
**ファイル名を一時的に変更 → APIに画像を投げる → ファイル名を元に戻す**
という作業をフォルダ内の画像全てに対して行うPythonプログラムを作りました。

今回しか使わないものなので、拡張子のとことか、荒い部分がありますがご了承ください。

# プログラム
“`Python
import os

filePath=’.\\folder\\test’ # パスは適宜変更してください

def main():
register()
os.system(‘PAUSE’) # 個人的にキーを押して終了させた方が好きなので入れています

def register():
# 変更する名前

元記事を表示

Python 3.9 で class property を作る

Python 3.9 から `@classmethod` と `@property` の重ねがけができるようになった事に気づきました。

>バージョン 3.9 で変更: Class methods can now wrap other descriptors such as property().
>https://docs.python.org/ja/3.9/library/functions.html#classmethod

ということで、早速実験してみました。

“`python
>>> class Foo:
… @classmethod
… @property
… def prop(self):
… print(‘Hello class property!’)
… return “hello”
“`

こういうクラスを作っておいて、クラス属性 `prop` を呼び出すと、メソッドが呼び出され、値が返ります。

“`python
>>> Foo.prop
Hello class property!

元記事を表示

pip install しようとしたら SSLError が出た

### pip install しようとしたら下記のようなエラーが発生

“`console
Requirement already satisfied: certifi in /XXXX/yyyy/.pyenv/versions/3.9.1/lib/python3.9/site-packages (2020.12.5)
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1123)’))’: /simple/certifi/
WARNING: Retrying (Retry(total=3, connect=

元記事を表示

Pyflow使ってDjangoが使える環境を作る

# はじめに
Pyflowを使いながらDjango環境構築方法が探してもなかったので、どうやってやったのかここにメモします。

# Pyflowとは

> ***引用***
Pyflow はおそらく一番新参のパッケージ管理ツールです。Rust で書かれており、Poetry で導入された PEP 518 に加え、PEP 582 で提案された、プロジェクト内で扱える仮想環境を複数の Python バージョンに対応させることができます。Pyenv + venv で 1 つの Python のパージョンの 1 つの仮想環境を扱う Pipenv/Poetry に対して、Pyflow は単体で Python のバージョンを複数管理して任意のバージョンで仮想環境を作ることができます。現環境で大きな恩恵は無い気もしますが、今後 Python にメジャーアップデートがあった場合などに重宝されるかもしれません。個人的な懸念は Rust で書かれていることで、速度等で恩恵がありそうな一方で、Rust にある程度の理解がないとエラーメッセージに対応しづらい点と、開発コミュニティが伸びにくいということです。
>

元記事を表示

【Python-docx】超面倒臭い、NDA作成を10秒で処理した話!

NDA(Non Disclosure Agreement)作成の話です。
21世紀のビジネスマンには、避けて通れない話題です。
私も、朝から晩まで、潜在顧客とのNDA締結作業をしております。
(営業交渉よりも、NDA締結の方に時間が掛っております。)

このNDAですが、会社ごとにフォーマットが違います。
ただ、ネットに転がっているサンプルとしては、例えば、下記です。
https://legaltemplates.net/form/non-disclosure-agreement/

![0715x.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/96b14091-65f8-bb47-6dbc-ae18639fe3cf.jpeg)

1.何が問題か? なぜ時間が掛るのか?

例えば、「日付」、「Disclosing Party」、「Receiving Party」を記載するのに、
いちいち、ワードを開いて記入しないといけません。
このワードに記入する作業ですが、実際に何通もNDAを書いて

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事