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

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

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

元記事を表示

言語処理100本ノック 第1章をpythonのワンライナーで解く

[言語処理100本ノック](https://nlp100.github.io/ja/ch01.html)の第1章をpythonのワンライナーで解いていきたいと思います。
セミコロンは使ってません。

# 00. 文字列の逆順Permalink
>文字列”stressed”の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.

pythonは`[::-1]`でreverseできるので楽でいいですね。

“`python
print(“stressed”[::-1])
“`

# 01. 「パタトクカシーー」
>「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.

pythonは`[a:b:c]`でaからbまでcずつ、というのを表現できるのでいいですね。

“`python
print(“パタトクカシー”[::2])
“`

# 02. 「パトカー」+「タクシー」=「パタトクカシーー」
>「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.

実はpythonではsumの第二引数に足し算する元?を指定

元記事を表示

ファイルごとに異なるPWでzip暗号化する作業の省人化。3人日掛かっていた作業を1秒で処理した話。【完成版】

日常業務を省力化を図っております。
一か月前に、「月初エクセル集計処理を完全自動化し、100人日掛かっていた作業を一秒で処理した話。【完成版】を書きました。→https://qiita.com/naiveprince0507/items/3e4d322f7f1c3068487a
それの第2弾となります。

===========
1.状況説明
下記の様な、顧客別に送付するPDFファイルがあったとします。
![0710.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1665829/acb30216-863e-1f33-de5b-63948a0313b6.jpeg)
客先にメールで送信する際に、それぞれのpdfファイルに、別個のパスワードでZIP暗号化を掛けて、客先送信すると言う事はよくあると思います。

2.普通のやり方
PW自動生成ソフトやサイトを使って、PWを作成して、それを一つずつコピペして、LhaplusみたいなZIP暗号化ファイル作成ツールを使って、一つずつ暗号化ファイルを作成していく必要があり

元記事を表示

Telegraf で InfluxDB 2.0 にデータを入れる

次のページを参考にしました。
[Grafana+InfluxDBv2+telegrafで室内温度を可視化する](https://izuminmin.com/server/try-grafana-influxdb-telegraf/)

Arch Linux で Telegraf のインストール

“`bash
yay -S telegraf
“`

起動

“`bash
sudo systemctl start telegraf
“`

設定ファイルの編集
>UDP 8092 に入ってきたデータを、InfluxDB に送ります。

“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
b

元記事を表示

zsh – brew doctorでWarning:”config”~~の対処方法

#まえがき
はじめまして。figgy puddingと申します。

3か月ほど、iPadでPythonista3を使って勉強、Macに移行後、zshやらbashやらの
てんやわんや時にエラー出まくり事案が発生、右も左も分からないけど、
ジンに会うためにハンターになることを決意したゴンがミトさんに認められて、
ハンター試験の受験資格を得たように、ターミナルシェルが zsh の方へ、
Pythonのインストール後にbrew doctorを行うとWarning”config”~~ と出た際の解決方法を
同じような方々に届いたら、との思いで投稿しました。bashの解決策はたくさんありますが、
zshがなかなか見つからず苦戦しました。今回はPATHのあとの一文がポイントになり、
解決することができました。目指せドーレ港!

“`:zsh
watashi@figgy ~ % brew doctor
Please note that these warnings are just used to help the Homebrew mainta

元記事を表示

Pythonでリスト型のコマンドライン引数を受け取る

# リストのコマンドライン引数を受け取る
やり方は色々あるかもしれませんが,今回はArgumentParserを使います.
ArgumentParserの主な使い方については,「[ArgumentParserの使い方を簡単にまとめた](https://qiita.com/kzkadc/items/e4fc7bc9c003de1eb6d0)」をどうぞ.

### プログラム例

コマンドライン引数にfloat型のリストとint型のリストを与え,それを表示させるプログラムです.

“`python:test.py
import argparse

parser = argparse.ArgumentParser(description=’an example program’)

parser.add_argument(‘–flist’, required=True, nargs=”*”, type=float, help=’a list of float variables’)
parser.add_argument(‘–ilist’, required=True, nargs=

元記事を表示

ndarrayでmatplotlibをしようと思ってどうでも良いところで躓いた記録

#初めに
 matplotlibはすごく便利です。numpyもすごく便利です。つまりpythonは便利ということです。以上です。

#プログラム
機械学習のデータとしてsin波を用意したため、それをとりあえず何となく可視化しようとしたのが以下のプログラムです。

“`python
import numpy as np
import matplotlib.pyplot as plt
# -4.0 ~ 4.0
xs = np.arange(-400,400)*0.01
# shuffle
np.random.shuffle(xs)
splitPoint = int(len(xs)*0.9)
# training and test inputs
xsTrain = xs[:splitPoint]
xsTest = xs[splitPoint:]
# trainin and test golds
tsTrain = np.sin(xsTrain)
tsTest = np.sin(xsTest)
#plot
plt.plot(xsTrain,tsTrain)
plt.show()
“`
![

元記事を表示

Displaying progress bar and ETA for Airflow backfills

During my work I often have to run long Airflow backfills. They take very long time and my boss often asks me “How long do you still need?”
It is not very easy to answer this question, since while Airflow displays INFO messages as

“`
[2021-07-06 14:24:11,117] {backfill_job.py:364} INFO — [backfill progress] | finished run 65 of 67 | tasks waiting: 0 | succeeded: 266 | running: 2 | failed: @ | skipped: 67 | deadlocked: @ | not ready: ®
“`
it does not show the estimated remaining time (ETA).

元記事を表示

【初心者向け】Python入門に超おすすめの本ランキング〜機械学習・作業自動化〜

この投稿ではこれから Python に入門する人に向けて、**まず読んでほしい**おすすめの書籍をランキング形式で紹介しています。

## Pythonで出来ること

Pythonは本当に色々なことができるプログラミング言語です。

– 機械学習
– 統計処理
– Webアプリのサーバーサイド
– エクセル操作等の単純作業の自動化
– Webスクレイピング

できることを挙げ出せばキリがありません。
しかもサードパーティライブラリが異常に充実しているので、少ないことで高い生産性を発揮することが出来ます。
おまけに文法も単純なのでプログラミング入門にも超オススメな言語です。

この投稿ではランキング形式でおすすめPython本を紹介しています。
が、実際に読む本を選ぶときにはPythonを活用して達成したい目的に合わせて自由に選択してください。

## 【やりたいこと別】Python入門にオススメの本ランキング

### 1位:ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

・[ゼロから作るDeep Learning ―Pythonで学

元記事を表示

販売データ分析チートシート (前処理/集計編)

# EC系の販売データを分析する際に使う処理

#### 販売データは以下のcsvを想定
|userid|order_id|purchase_date|shipment_date|product_name|amount|
|:—-|:—-|:—-|:—-|:—-|:—-|
|1|1|2021-01-01 00:00:00|2021-01-03 00:00:00|A|100|
|2|2|2021-01-01 00:00:00|2021-01-03 00:00:00|A|100|
|3|3|2021-01-01 00:00:00|2021-01-03 00:00:00|B|200|
|1|4|2021-02-01 00:00:00|2021-02-03 00:00:00|B|200|
|2|5|2021-02-01 00:00:00|2021-02-03 00:00:00|A|100|
|3|6|2021-02-01 00:00:00|2021-02-03 00:00:00|B|200|

#### csv読み込み
“`py
import pandas as p

元記事を表示

Django Rest FrameworkでAmazon S3のファイルをダウンロードするAPIを作成する

# 前提条件
– AWS S3の読み取り権限を持ったユーザを用意すること
– [AWS コマンドラインインターフェイス](https://aws.amazon.com/jp/cli/)を使って、上記ユーザでログイン済みであること
また、本記事で扱う言語・ライブラリのバージョンを以下に示します。

“`
python-3.9.5
Django==3.2.4
djangorestframework==3.12.4
boto3==1.17.91
“`

# ファイルの準備
AWSコンソールからS3に入って適当なファイルをバケットに配置します。
今回は`test-qiita`バケットを作成し、`test.txt`というテキストファイルをアップロードしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/247330/fb1bdc25-b320-45f8-1457-2b7135b35bc5.png)
本記事ではDjango REST Frameworkを用いて、このtest.txtをダウ

元記事を表示

OTHERカテゴリの最新記事