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

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

アプリ制作 herokuでのslug sizeについて

##この記事について
プログラミング初学者の私が初めてherokuにデプロイする際につまずいてしまったところを共有していけたらと思います。少しでも参考になれば幸いです。

##herokuでのデプロイ
今回私はFlaskを使ったアプリの開発を行いherokuへデプロイしようとしました。しかし最初から上手くいくはずもなくエラーがバンバン出てきました。
その中で一番出てきたエラーが
`Compiled slug size: 504.7M is too large (max is 500M).`
herokuにデプロイできる最大容量が500MB(無料版)に対して実際にデプロイしようとしたものが__504.7MBで容量オーバー__ですよというエラー。
あと4MBぐらいならrequirements.txtでモジュールを違うバージョンに書き換えて調整すれば500MBきるかなと思っていたんですが、デプロイしようとするたびに容量オーバーのエラーが出てしまっていました。
##原因
最初はモデルに読み込ませたデータ量が大きすぎたのかなと思いデータ量を少なくしてモデルを再構築しデプロイしてみましたが__結

元記事を表示

Python Anacondaでの開発環境 【VScode】

皆さん、記事主モノ([My Twitter](https://twitter.com/El4lQmonosiwnf) へ)です。
今回も学んだことについて、一つ一つアウトプットを兼ねて、Pythonに関する知識や理解を皆さんと共有できたらと思います。

さて、今回やっていくことは、実際にAnacondaを動かして開発環境を整えたり、パッケージの使いかたをアウトプットしていきます。

#1,Anacondaを起動してみよう
##1-1, 開発環境を整えていく
まずは、インストールしたAnaconda Navigatorを起動していきましょう。
下記の画像のように選択した後、二枚目の画像のように表示されれば起動は完了です。

※一枚目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/927177/a6ae6a13-3bf8-319d-8246-ec63758aaf6f.png)
※二枚目
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

頑張らずにM1チップのまっさらMacでFlask環境を作ってみた

私のMacBookはまっさらなので、まずHomebrewをインストール。
Rosetta2が入っていればx86_64と同じように動く。便利。
[Homebrew](https://brew.sh/index_ja)のページに記載されているスクリプトを実行。

“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
これだけで動いた。
あとはHomebrewに指示された通りのコマンドを打つ。

“`
$ echo ‘eval $(/opt/homebrew/bin/brew shellenv)’ >> /Users/midori/.bash_profile
$ eval $(/opt/homebrew/bin/brew shellenv)
“`
前者のコマンドで次回シェルを開くときに自動的に処理が行われるようして
後者のコマンドで今開いているシェルに対して処理を行う、らしい。[参考](https://qiita.com/m-tma

元記事を表示

how install python version 3.9.0 in macOS Big Sur 11.2

#I bought new mac book pro and set up my env.

But pyenv install 3.9.0 is not working…

#新しいMacBook Proを購入してセットアップ!
しかし、pyenv install 3.9.0 がerror。lol

“`
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.0.tar.xz…
-> https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
Installing Python-3.9.0…
python-build: use readline from homebrew

BUILD FAILED (OS X 11.2 using python-build 20180424)

Inspect or clean up the working tr

元記事を表示

Python 学習環境を構築をする方法【Anaconda】

今回初記事となります。
記事主モノ([My Twitterへ](https://twitter.com/El4lQmonosiwnf))が学んだことについて、一つ一つアウトプットを兼ねて、Pythonに関する知識や理解を皆さんと共有できたらと思います。
某アニメの青タヌキのような暖かい目で見ていただけたら幸いです。

この記事ではWindows10パソコンにPython環境をインストールして使えるようにする方法について紹介していきます。
(間違い・こうした方がいい等ございましたら、ご指摘いただけたらと思います。)

以降pythonという言葉は、基本的にはpyhton3系を指します

#Pythonのインストールのやり方(Anaconda)
##Python初心者の方向け
まずAnacondaは、Pythonのディストリビューション(distribution)です。ディストリビューションとはコンパイルしてある設定済みのソフトウェアの集合体を指します。

WindowsでPythonを使うにはAnacondaという統合開発環境をインストールしていきます。Anaconda自体はただの箱であ

元記事を表示

テキスト読み込み

def setting_number_reading(self):
self.setting_number=[]

with open(‘./setting.csv’, encoding=”shift-jis”) as f:
reader = csv.reader(f)
header = next(reader) # ヘッダーを読み飛ばしたい時

for row in reader: # 1行づつ取得できる
self.setting_number.append(row[1])

if self.setting_number[0] ==””:
self.setting_number[0] = “0”

if self.setting_number[1] ==””:

元記事を表示

Dijkstra Algorithm

#Abstract
Dijkstra Algorithm[^1] is an algorithm for finding the shortest paths between nodes in a graph. It is well-known among Japanese science undergraduate students, for it is always taught as mathematical optimization. However, it is taught just a method by hand, not programming. So I will program it in order to review it in Python.

#Order
Dijkstra Algorithm Order $O((|V|+|E|)\log |V|)$ (where $|V|$ is the number of nodes and $|E|$ is the number of edges).

#Aim
– input
– start pla

元記事を表示

[Python]平方根の誤差

# 概要

[ABC191 D – Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d) で平方根を求める際に、浮動小数点数を返す `sqrt` は正方向に $1$ 以上の誤差を持つことがあり WA であった。
整数 $n$ に対して $a^2 \le n$ を満たす最大の整数 $a$ を得るには、`int(sqrt(n))` ではなく `isqrt` を使うと良い。

# 検証

手軽に計算可能な $1 \le n \le 10^7$ の範囲では `int(sqrt(n)) != isqrt(n)` である $n$ は見つからなかった。
調べたところ $2^{52}+2^{27} = 4,503,599,761,588,224$ が条件を満たす最小の数だそう。

>FWIW, assuming IEEE 754 semantics (with C’s double matching IEEE 754’s binary64), the smallest n for which int(math

元記事を表示

【Python】ABC191 D – Circle Lattice Points (誤差問題)【AtCoder】

[ABC191 D – Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d)

ふりかえりをしていたが、
解説見て、解き方わかったのにどうしてもWAが消えない
10000倍して、整数でやってるつもりなのに、どうして!!!
ということでACの人たちのコードみたら、
10000倍してる人も**ルート計算で結局Decimal使ってるっぽい!**

#結論

**Decimal最強伝説!**
誤差問題はDecimalで提出しましょう。
※ちなみに、PyPyはDecimal計算遅いので、Pythonで提出しましょう。

#以下結論までの軌跡・・・
提出したコードたちはこちら

“`python:WA1.py
import math,sys
def LS(): return list(sys.stdin.readline().rstrip().split())
#############################
from decimal import Decimal
n = 10000
X,Y,

元記事を表示

Python3: JWT のペイロード部をデコード

こちらのプログラムを Python3 で書き換えました。
[Node.js: JWT のペイロード部をデコード](https://qiita.com/ekzemplaro/items/3e2c1e9cf9189a79b27c)

“`py:decode_jwt.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# decode_jwt.py
#
# Feb/08/2021
#
# ——————————————————————
import sys
import os
import json
import urllib
import requests
import base64
#
# ——————————————————————
def decodeJWT(str_token):
sys.stderr.write(“len(str_token) = %d\

元記事を表示

open(0)とすると標準入力に対応するファイルオブジェクトが取得できる

Python3で標準入力から入力を読む方法はいくつかありますが、組み込み関数の`open`を使って、`open(0)`とすると標準入力に対応するファイルオブジェクトを取得できます。

利用例としては以下のようになります。

“`python
stdin = open(0)
for line in stdin:
do_something(line)
“`

`open`の引数を`0`にすると、なぜ標準入力になるのでしょうか? [ドキュメントを注意深く読むと以下のように記述されています。](https://docs.python.org/ja/3/library/functions.html#open)

> file は path-like object で、開くファイルの (絶対または現在のワーキングディレクトリに対する相対) パス名を与えるものか、または、ラップするファイルの整数のファイルディスクリプタです。

`open`の引数としてはファイルパスだけでなく、ファイルディスクリプタを示す整数を指定することもできます。標準入力のファイルディスクリプタは0ですから、`ope

元記事を表示

Python3: Firebase Auth のトークンの作成

次の記事を参考にしました。
[PythonでFirebase Authenticationのトークン取得とFastAPIでトークン検証](https://qiita.com/DeliciousBar/items/d6845d329e37f21a6d4f)
参考ページ
[Relyingparty: verifyPassword](https://developers.google.com/identity/toolkit/web/reference/relyingparty/verifyPassword)

“`py:get_token.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# get_token.py
#
# Feb/06/2021
#
# —————————————————————-
import sys
import os
import requests
from dotenv import load_dotenv
# —–

元記事を表示

Flask(Jinja2)でzip()を利用する方法

Jinja2のテンプレート側でzip()が使えないものかと少し調べてみました。
結論、jinjaのフィルターとして指定すれば使えた。

#実装
app.pyなどpython側では

“`python
app = Flask(__name__)
app.jinja_env.filters[‘zip’] = zip
“`

とjinjaのフィルターとしてzipを追加する。
混乱しないようにフィルターの名称はzipとしてますが、被らなければOKなはず。

あとはテンプレートファイル側で

“`
{% for item1, item2 in iterable1|zip(iterable2, iterable3) %}
“`
としてあげればOK。
iterable1,2,3にはその名のとおりイテラブルなオブジェクトがきます(この辺はpythonでzip使う時と全く一緒)

自分はzip()が使いたくて調べましたが、拡張性高くて良いですね。

元記事を表示

【初心者向け】VSCode からPython boto3 でAWSリリースを触ろう

# はじめに
この記事は、社会人2年目 AWS、python初心者が勉強したことをまとめたものです。
間違っている点、改善点等ございましたご指摘いただけると大変ありがたいです。

# この記事について
新米エンジニアがVSCodeからboto3を使用してAWSリソースを触るまでの手順を自身の備忘録として残したものです。
自分と同じような初心者のためになれば幸いです。

# 準備
デバッグ実行に関連する各種の構成情報を記述するlaunch.jsonファイルに、
AWSアクセスに必要な情報を環境変数として埋め込んでおきます。

“`json:launch.json
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Python: Current File”,
“type”: “python”,
“request”: “launch”,
“program”: “${file}”,

元記事を表示

PythonでBMPファイルを読み込む

# 対象
いわゆる256bmpが対象です。
外部ライブラリは使っていません。
python3.9で動作確認しましたが、多少下のバージョンでも動くかもしれません。
対象読者は、どちらかというと、256bmpのフォーマットを知っており、他の言語で256bmpの読み書きを実装したことがある人です。
すぐ使えること、行数が少ないこと、ある程度読みやすいことを優先しています。堅牢さや多機能さの優先度は下げています。

# 経緯
256bmpのフォーマットはシンプルで、多少の加工であれば、幅、高さ、パレット、画素の4つがあれば十分です。
ならば小物ツールを作るとき、install不要の標準ライブラリだけで楽に実装できそうです。

ということで参考情報を探すべく「python BMP 読み書き」等でぐぐったのですが、ドンピシャのものが見つからなかったため作りました。

なお、用途によっては画像系の外部ライブラリを使うことも多いでしょうし、あくまで参考になれば程度です。

# サンプルコード
“`python:bmpRead.py
#!/usr/bin/env python3.9
“””
BMP

元記事を表示

PythonでBMPファイルを出力する

# 対象
いわゆる256bmpが対象です。
外部ライブラリは使っていません。
python3.9で動作確認しましたが、多少下のバージョンでも動くかもしれません。
対象読者は、どちらかというと、256bmpのフォーマットを知っており、他の言語で256bmpの読み書きを実装したことがある人です。
すぐ使えること、行数が少ないこと、ある程度読みやすいことを優先しています。堅牢さや多機能さの優先度は下げています。

# 経緯
256bmpのフォーマットはシンプルで、出力に必要な最低限の情報は、幅、高さ、パレット、画素の4つだけです。
ならば小物ツールを作るとき、install不要の標準ライブラリだけで楽に実装できそうです。

ということで参考情報を探すべく「python BMP 出力」等でぐぐったのですが、ドンピシャのものが見つからなかったため作りました。

なお、用途によっては画像系の外部ライブラリを使うことも多いでしょうし、あくまで参考になれば程度です。

# サンプルコード
“`python:bmpWrite.py
#!/usr/bin/env python3.9
“””
bytea

元記事を表示

python3のインスタンスメソッド、クラスメソッド、スタティックメソッド

## 概要

### インスタンスメソッド
・記述方法
・試行
①インスタンスメソッドの呼び出し(初期化あり、初期化なし)
②インスタンスメソッドからインスタンス変数へのアクセス
③インスタンスメソッドからクラス変数へのアクセス
④インスタンスメソッドからクラスメソッドとスタティックメソッドにアクセス

###クラスメソッド
・記述方法
・試行
①クラスメソッドの呼び出し
②クラスメソッドからインスタンス変数へのアクセス
③クラスメソッドからクラス変数へのアクセス
④クラスメソッドからインスタンスメソッドとスタティックメソッドへのアクセス
⑤第一引数にクラスがある事による利点

###スタティックメソッド
・記述方法
・試行
⓪Boundオブジェクトを生成せずに、直接関数オブジェクトが実行されるので、クラスメソッドとインスタンスメソッドよりも、呼び出し速度が早く、メモリ消費も少ないらしい.
①スタティックメソッドの呼び出し
②スタティックメソッドからインスタンス変数へのアクセス
③スタティックメソッドからクラス変数へのアクセス
④スタティックメソッドからインスタンスメソッドとクラスメ

元記事を表示

【Python】受信したメールの添付ファイル名に日本語が含まれているときの対応

## 環境
python 3.7.5

## 省くこと
gmailのアプリパスワード取得の手順は省きます。

## メールサーバーにログイン
“`mail.py
import imaplib
import email

# 自身のメールアドレス
gmail_address = ‘hoge@gmail.com’
# googleアカウントで取得したアプリパスワード
gmail_app_password = ‘hogehogehogehoge’

gmail = imaplib.IMAP4_SSL(“imap.gmail.com”, ‘993’)
gmail.login(gmail_address, gmail_password)
# select()でボックスを選ぶのですがここでは選択しない
gmail.select()
“`

## メール一覧を取得
“`mail.py
# ALLの部分を変更することで検索をかけることができます
head, data = gmail.search(None, ‘ALL’)
for num in data[0].split():
resul

元記事を表示

How to deal with NameError: name ‘the inputed value’ is not defined

Why error?

When you run codes below,

“`
username = input(“what’s your name: “)
print(username)
“`

You will get error below for some reason.

“`
Traceback (most recent call last):
File “file-name.py”, line 1, in
username = input(“what’s your name: “)
File ““, line 1, in
NameError: name ‘the inputed value’ is not defined
“`
This is because you use python 2.x version instead of python 3.x version.

Solution

In python 2.x version, raw_input(

元記事を表示

【Python3】定期券計算を使って「○年○月○日は何カ月前!」ってのを書いてみた

# 1. 概要
Python3でいわゆる定期券計算とdatetimeを使って、何日前、とか何カ月前みたいなのを出してみた。

![20210205083839_a5b294ec43bb5777c5a19f65eb448791.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92447/39363502-0504-4eea-227e-0549e8147a8c.png)
という事が稀に良く起きるので。あ、手書きで漢字を書く時も稀に良くある。
耄碌したかな…。

# 2. 動作サンプル
[https://paiza.io/projects/_YmaBQlwVecdO9JDagJKvA](https://paiza.io/projects/_YmaBQlwVecdO9JDagJKvA)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92447/9ca83c25-3ed0-68ad-76ce-b88db70f7ab

元記事を表示

OTHERカテゴリの最新記事