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

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

複数ホストから一斉にファイルを回収する

[前回はこちら](https://qiita.com/mashi0923/items/169ca40f53b2cd9392de)
前回のおまけのような内容です.

前回は一斉にプログラムを動作させる方法を記載しました.
今回は複数ホストから一斉にファイルを回収する方法を載せておきます.

使い方はなんら変わりません.

“`paramiko_copy.py
#!/usr/bin/python3

import paramiko
import os
import datetime as dt
import scp

user = “username”
passwd = “PASSWD”

with open(“host.txt”) as f:
s = f.readlines()

host_name = []
for i in range(len(s)):
if s[i].startswith(‘#’):
pass
else:
host_name.append(s[i].replace(“\n”,”))
print(h

元記事を表示

同一ネットワーク上の複数ホストに対して,一斉実行命令を出す(on python3 paramiko)

私が普段学校で実験を行う際に,複数のホストで一斉にプログラムを動かしたいときが有ります.
人手があれば,1人1台張り付いて実行すれば良いですが,深夜に実験を回すこともあるので,1人で複数ホストに対して一斉に実行命令を出すことができれば効率が上がると考え,実装しました.
同様の環境を構築したい方は,参考にしていただけると幸いです.

#実行環境と使用ツールのインストールなど
命令を送るPC:Debian11(test)
命令を受け取るホスト:ラズパイ(Debian)
今回はラズパイに向けて実行してますが,PCでも問題ないです.

命令を送るPCのPythonのバージョン
Python 3.9.2

環境構築に向けて,インストールしなければいけないものがあります.
それはparamikoというパッケージ?モジュール?です.

“`
$ aptitude search paramiko
i python3-paramiko – Make ssh v2 connections (Python 3)

もしくは

$ sudo apt-get install python3-p

元記事を表示

ideapad duetにjupyter labを入れるまでの覚書

## はじめに
 先日ideapad duetを衝動買いしました。軽いPCなので出先で気軽にpythonをポチポチできたらな〜と思っていたのですが、jupyterの導入に難儀した+意外とまとまった情報が見当たらなかったので、備忘も兼ねてjupyter labの導入までを記します。
##Linuxの有効化
 chromebookでは「設定→デベロッパー」からLinuxを有効化することができます。適当にディスクサイズを指定して、指示どおりボタンを押せば勝手にインストールされます。簡単便利!
##jupyter labの導入
 anacondaを使ってpythonの環境を整えたかったのですが、ideapad duetはARM系の何かしらを使っているらしく、どうやら素直にインストールすることができないようです(無知)。そのため、pipでちまちまインストールしていきます。

が、まずはそのpipを使えるようにします。

“`
sudo apt-get update
sudo apt-get install python3-pip
“`
jupyter lab(とその他周辺機器)をインストール

元記事を表示

pythonでprintしてみた

“`
print(‘こんにちは’)
“`

元記事を表示

【AtCoder】ABC210をPython3で解説

ABC210の解説。

https://atcoder.jp/contests/abc210

## A – Cabbages
### 解説
キャベツ1つ$x$円。
**もし、キャベツを$A$個より多く買うとき、次から買うキャベツは$Y$円で買うことができる。**

キャベツを$N$個買うとき、必要な金額はいくらかという問題。

問題文の通り実装すれば、ACできる。注意点は、もし$A$よりも多いとき、というところだ。

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

if n > a:
print(x*a+(n-a)*y)
else:
print(x*n)
“`

## B – Bouzu Mekuri
### 解説

問題の解釈をすると、文字列$S$のなかで先に$1$を出したほうの名前を出力するという問題。

文字列$S$を1文字ずつ確認していって、$1$が出たときに条件分岐。偶数番目なら、青木くんの負けなので“`print(‘Aoki’)“`、奇数番目なら、高橋くんの負けなので“`print

元記事を表示

pytorch-openposeで姿勢推定(MacOS CPU)

##今回やったこと

![スクリーンショット 2021-07-19 21.18.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1754134/82c787cf-1bf5-00ca-4536-e5f5156716f3.png)

![スクリーンショット 2021-07-19 21.36.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1754134/40f78854-66ca-f741-8875-6cf699206789.png)

##*Pytorch-openpose*を利用

当初、次のリポジトリの資源をgit cloneしようとしたが、__*tesorflow=1.4.1*が入れられなかった__ため、利用を諦めた。

– https://github.com/jiajunhua/ildoonet-tf-pose-estimation

変わりに、PyTorch実装の資源を次から入れることにした。

– h

元記事を表示

M1 Macでできるだけ楽にPython環境を構築する

# はじめに
seabornを使いたくて`pip install seaborn`をしたらド偉い量のエラーに見舞われた。いい機会と考えてなあなあで構築していたPython環境をすべてリセットしてイチから構築し直した。

# 環境

– M1 MacBook Air
– macOS Big Sur 11.3.1

# この記事でやること

1. Homebrewのインストール
1. Pythonのインストール
1. 各種パッケージ(numpy、pandas、matplotlib、scipy、seaborn)のインストール

通常使用であればこのあたりのパッケージがあれば十分?だと思う。TensorflowやPyTorchが必要な人は頑張ってくれ。

なおこの記事ではvenvなどを用いた仮想環境での構築は行わない。仮想環境を使いたい人は[この記事](https://qiita.com/ketaro-m/items/ebae35c49d55aa86dfcf)が参考になる。

# Homebrewのインストール

M1が出てしばらくはhomebrewのインストール方法が迷走していたらしい[^1

元記事を表示

OpenCV2で物体追跡 〜 特徴点の移動軌跡をフレーム画像から切離してファイル出力

__[前回の記事](https://qiita.com/electronics_diy721/items/ad9bb5a095ba90e96e37)__では、OpenCV2の物体追跡APIの解析結果を、3つのWindowsに分けて、個別出力しました。

1. オリジナルの画像に、特徴点の移動軌跡を重ねたフレームを、時系列で再生したウインドウ
2. オリジナルの画像に、特徴点を小さな●で重ねた表示したフレームを、時系列で再生したウインドウ
3. 特徴点の移動の軌跡ラインだけを、背景真っ黒な画面に表示させたものを、時系列で再生したウインドウ

今回は、Windowsが閉じた後に、後で繰り返し上記の1〜3を閲覧できるように、ファイル出力を行いました。

– 「1」の__動画__ファイル
– 「1」の__静止画__ファイル (総フレーム数個のファイル)
– 「2」の__静止画__ファイル (総フレーム数個のファイル)
– 「3」の__静止画__ファイル (総フレーム数個のファイル)

前回の記事に引き続いて、__次の記事で公開されているコード__を参考にしました。

– https://qii

元記事を表示

C++ matplotlib-cppでtrend chartを書く方法

#C++ matplotlib-cppでtrend chartを書く方法

データの可視化は情報を整理したり、わかりやすく結果を示すときによく使うと思います。
データの可視化にはトレンドチャートやバーチャート、モザイクチャートやヒートマップ、データテーブルなど様々な表現があり、時と場合に応じて使い分け、適切な表現で示すことで、伝えたいことを100%伝えることができます。
様々な可視化Toolの中で、今回はC++のmatplotlib-cppを使ったGraphのつくり方をまとめました。

##matplotlib-cppとは
ドイツ ハンブルクのソフトウェア企業TenzirのBenno Eversが2014年にGitに公開したC++ Plot Libraly。
Python Matlabとmatplotlibを参考に作られており、使い方はmatplotlibに似ています。

[Tenzir Home Page](https://tenzir.com/)
[matplotlib-cpp Github](https://github.com/lava/matplotlib-cpp)
[mat

元記事を表示

pythonを便利に使おう第六回!線図編!

#初めに
 どこかの入試問題だったか定期テスト問題だったかで、面白い線図の問題が出たことをたった今になって思い出したところ、その線図の最終的な答えが確か、ドラえもんになったのを覚えています。今回はとりあえずmatploblibで簡単な線図が出来るようになるのを目指します。
#線図
 線図の重要性は、そのほとんどの概念が現実世界と鏡写しに出来ることから、簡単に理解できます。例えば、機械の設計では細かく素材の長さを設定し、その図形によって、「この角度であれば、この材質のものではこれほど耐えることが出来る」などを導き出すことができます。線図とはやはり手書きで、人の手で思考のままに手掛けるべきなのでしょうが、便利になるならばそれに越したことはありません。
##第一問 円の線図

 円の関数は以下のとおりですね。

“`math
r=x^2+y^2
“`

 半径を1と仮定し、xの配列からyを求めて、それをmatplotlibで表示できるか試みます。

“`python
import numpy as np
import matplotlib.pyplot as plt
xs = np.a

元記事を表示

OpenCV2で物体追跡 〜 特徴点の移動軌跡をフレーム画像から切離してウインドウに動画出力

__[前に書いた記事](https://qiita.com/electronics_diy721/items/7ba53551862dbecb0b91)__でうまく動いたスクリプトを微修正して、次の3つのWindowに、OpenCV2の物体追跡の異なる出力結果を出してみました。

__前回の記事に引き続いて、次の記事で公開されているコードを参考にしました。__

– https://qiita.com/hitomatagi/items/772549d0fc3c89fb3cc4

##今回、出力した3つの画面

__( Window )__

通常、OpenCV2から出力されるのは、この画面です。

![スクリーンショット 2021-07-18 15.21.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1754134/25eaf541-b081-19ee-6b89-f572b54ff2dc.png)

__( Window 2 )__

ある時点で読み込まれたフレーム画像に対して、OpenCV2

元記事を表示

明日使える(?)ムダ知識をあなたに~Python3知られざる機能~

# はじめに
諸事情からpythonの [Full Grammar specification](https://docs.python.org/3/reference/grammar.html)を読んでいたら、普段雰囲気でなんとなく使っていたpythonのあまり目にしない機能をいくつか見つけたので紹介してみます。

明日から使える・・・かどうかはわかりませんが、明日同僚にどや顔するくらいの使い道があること間違いなし!

紹介順には特に意図はありません。

# 1. PEP570 Python Positional Only Parameters [Python 3.8~]

“`python
>>> def id(x): return x

>>> id(2) # (i)
2
>>> id(foo=2) # (ii)
2
“`

実は、上のように定義されたpythonの関数`id`は引数を(i)のようにして渡すこともできるほか、(ii)のようにラベル付きで渡してあげることもできます。このような渡し方ができるパラメータはそれぞれpositional parameter, ke

元記事を表示

【 OpenCV2 】物体追跡コードのエラー対処法 〜 line, circleの引数はint型、特徴点未検出のフレームは飛ばす

OpenCV2のオブジェクト・トラッキングに関する記事です。

ウェブサイトに公開されている実装コードに、任意の動画ファイルを食わせたところ、__複数の公開コード__に__共通する「コードの修正ポイント」__を見つけました。

__原因と解決策__について、検討がついたので、知見を共有したいと思います。

###サンプルコードの例
– https://qiita.com/hitomatagi/items/772549d0fc3c89fb3cc4
– https://ohke.hateblo.jp/entry/2019/08/10/230000
– https://algorithm.joho.info/programming/python/opencv-optical-flow-lucas-kanade-py/

###(直面したエラー1)

“`bash:Terminal
Traceback (most recent call last):
File “/Users/electron/Desktop/optical_flow/optical_flow.py”, line 72,

元記事を表示

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

#やりたいこと

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を書いて

元記事を表示

OTHERカテゴリの最新記事