Python3関連のことを調べてみた2022年01月05日

Python3関連のことを調べてみた2022年01月05日

DjangoRestframeworkのModelViewSetでHTTPメソッドごとにカスタマイズする方法

# 目的
DjangoRestframeworkでModelViewSetを使ってシンプルに爆速でAPIを実装しようと思ったものの、HTTPメソッドによってはデフォルトの動作だけではなく、他の動作を追加してみたいとおもった。

# 実施環境
### ハードウェア環境
| 項目 | 情報 |
|:-:|:-:|
| OS |macOS Catalina(10.15.7) |
|ハードウェア | MacBook Air (11-inch, Early 2015) |
|プロセッサ | 1.6 GHz デュアルコアIntel Core i5|
|メモリ | 4 GB 1600 MHz DDR3 |
|グラフィックス | intel HD Graphics 6000 1536 MB |
### ソフトウェア環境
| 項目 | 情報 |
|:-:|:-:|
| homebrew | 3.3.8 |
| mysql | Ver 8.0.27 for macos10.15 on x86_64 |
| python | 3.8.12 |
| anaconda | 4.

元記事を表示

AWS LambdaでCSVを一時領域を利用せずS3に保存する

## はじめに
Lambdaでは一時領域として`/tmp`フォルダが提供されていますが、上限512MBのまでの制限があり大容量のCSVファイル生成があった場合に制限がかかっていました。
csvにストリーム出力してS3に保存する方法があるか調べてみました。

## 変更前
変更前のCSV作成〜s3アップロードは以下になります。
`/tmp`領域にファイル作成してS3にアップロードしていたので512MBを超えるファイルの作成はできませんでした。

“`python
import csv
import boto3
import psycopg2
import psycopg2.extras

def get_conn():
return psycopg2.connect(
host=’hostname’,
port=5432,
database=’xxxxxx’,
user=’xxxxx’,
password=’xxxxx’,
)

def get_data():
with get_co

元記事を表示

Pythonで引数のデフォルト値として関数呼び出しをするときの注意

### 先に結論
関数を定義した段階で、デフォルト引数で呼び出している関数の結果は確定する。

“`python
from time import time
from uuid import uuid4

def some_func(now=time(), uuid=uuid4()):
print(now, uuid)

some_func()
some_func()
some_func()
some_func()

# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
# >>> 1641341885.5043182 e5ffb9ca-e068-4810-bfa9-3c801734e2b0
“`

### 実際に自分が起こした問題。
ユーザーインスタンス作成

元記事を表示

ゲーミング円運動

# はじめに

本記事は筆者が「ぬるぬる動くグラフが作りてえな~」と思って作ったものの副産物です。
解説に誤りがあるかもしれませんので見つけたら教えてください。

# 使用ライブラリ
・matplotlib
 - .animation
 - .pyplot

・numpy

## ライブラリ説明
・matplotlib
言わずと知れたグラフ描画ライブラリです。

・.animation
グラフを更新するモジュールみたいです。

・.pyplot
グラフを描画するモジュールみたいです。

・numpy
言わずと知れた配列・数学関数のライブラリです。

# ソースコード

“`python:gaming_circle.py

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation

n = 50
arry = np.linspace(0, 2*np.pi, n)
x = np.cos(arry)
y = np.sin(arry)

fig, axes = plt.subp

元記事を表示

PySimpleGUIでforで使えるプログレスバーを作る

要素をforで回すときにプログレスバーがほしいと思ったときに作ったもの。
基本的に最後のコードを読んだ方が早い気がする。

## PySimpleGUIについて
GUIをいい感じに作れるようになるライブラリ、これについては書いてくれている人がいくらでもいそうなので割愛。

## 2つのプログレスバースタイル
プログレスバーは処理の全体が分かっている場合のプログレスバーと、
処理がどれだけ残っているか分からない場合のマーキースタイルがある。
どちらが適しているかを使う側が意識しなくていいように、Sizedで判定させて自動で切り替えるようにした。

プログレスバーはsg.ProgressBarとして用意されているが、MAXが不明なマーキースタイルについては標準で用意されているものが見当たらなかったのでsg.Textをみっちり並べて色を変えることでそれっぽい動きをさせるようにした。

## 処理の流れ
Progressのインスタンスを作り、iterメソッドを使う。
またはProgressの第一引数にiterableを与えてProgress自体をforで回す。
iterは引数1つの使い方のみ。

元記事を表示

[Python] 初心者向け PythonAnywhereの無料アカウントでGoogle Newsをスクレイピング

クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでアカウントを作ったので、
手始めにYahoo! Japanのtopicsをスクレイピングしたかったのですが、403 Forbiddenエラーになります。これは、無料アカウントではPythonAnywhereからアクセスできるサイトが限られているためです。

Google.co.jpはアクセスできたので、Google Newsからヘッドラインをスクレイピングすることにしました。
https://news.google.co.jp

![スクリーンショット 2022-01-04 203150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823476/f5e41357-f060-af97-99a7-be21390160b2.png)

コードはこちらのサイトにのっているYahoo!のトピックスをスクレイピングするものをGoogle News用に変更しました。

【Webスクレイピング入門】ヤフーニュース の見出しとURLを

元記事を表示

Jupyter Labとipywidgets install 備忘録

#概要
ipywidgetsが使われているnotebookがJupyter labで正常に表示されなかったので、conda仮想環境作成時に忘れないように残す。
Colabは予め環境が出来ているので何もしなくとも問題ない。

– 実施期間: 2022年1月
– 環境:Python3.8.12 (miniconda)
– OS: Ubuntu20.04 LTS

##現象
いつもversion指定なしにJupyter labをインストールしている。

“`terminal
conda install -c conda-forge jupyterlab
“`

2022/1現在、指定しなければver.2.1.0が入る。
ver.2でipywidgetsを表示させるため下記を行った。

“`terminal
conda install -c conda-forge ipywidgets
conda install -c conda-forge ipympl
conda install -c conda-forge nodejs
conda install -n base -c cond

元記事を表示

PythonでQRコードを3行で作成してみた

## 0.はじめに
pythonを用いることで3行でQRコードを作成できるようなので、検証してみました。
##ライブラリをインストール
今回利用するqrcodeライブラリをインストールします。

“`
pip install qrcode
“`

## QRコードの作成
QRコードを作成します。

“`
import qrcode
img = qrcode.make(‘https://www.youtube.com/watch?v=dkWzWxrINRc’)
img.save(‘qrcode.png’)
“`

実行することで以下のQRコードを作成することができます。

![qrcode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2465378/b43897b0-26ca-dfa2-9271-6f733d301564.png)

## 実行動画