- 1. 【Python】GooglePhotosAPIで写真・動画のバックアップを取得する方法
- 2. 【勉強記録】Pythonのデータ型について
- 3. Flaskで超簡単 奇数偶数判定
- 4. PySparkにてArrayType内のカラムにドット(.)が含まれるカラムにSELECTする方法
- 5. PySparkにてStructType内のカラムにドット(.)が含まれるカラムにSELECTする方法
- 6. ランダム処理
- 7. 【Python】SBI証券に自動ログインしてみた
- 8. yukicoder contest 313 参戦記
- 9. 社内の複数あるオンライン事務とバッチ事務を可視化してみた
- 10. Windows 10 HomeへDockerをインストールしてDjango + PostgreSQL環境作る
- 11. ABC209 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
- 12. isort で ignore_blobs を設定する
- 13. ニュートラルネットワーク(重みとバイアス)
- 14. Python(enumerate,zip,dict,os.path,directionary)
- 15. 画像ファイルのRGBの数値をcsvファイルに出力する
- 16. LambdaでS3のPDFを画像化して保存(Docker,Python)
- 17. JupyterからQtアプリケーションを動かす
- 18. Python3について(@,デコーダーについて)
- 19. Spotify API で遊ぶ ~NetworkX で関連アーティストを可視化~
- 20. Python で静的メソッドベース API っぽいのを実現するメモ
【Python】GooglePhotosAPIで写真・動画のバックアップを取得する方法
# はじめに
去年娘が生まれてからスマホで写真や動画を取る頻度がとても増えました。
私も妻もAndroidユーザーなので、自動でGoogle Photoに同期するようにしていて、非常に便利なのですが容量が15GBまでの制限があり、バックアップを取ってから削除していくというのを手動で行っておりました。
何とかならないものかと思い、自動で自宅のNASに写真や動画をバックアップするスクリプトを作りました。# tl;dr
– AndoridのGooglePhotoへの自動アップロードしておく
– pythonでGoogleのAPIををつかって写真と動画を取得するスクリプトを作成
– ローカルサーバーのcronに仕込んで日次実行させる
– サーバーへの定義とスクリプトのデプロイはAnsibleスクリプトのコードはこちら
https://github.com/tokku5552/google-photo-backup
## 目次
– 環境と構成
– GCPでAPI有効化とOAuth認証設定
– pythonでPhoto Library APIを実行
– ReadyNASでのNFS有効
【勉強記録】Pythonのデータ型について
## 目次
– 趣旨
– 代表的なデータ型
– サンプルと型の確認## 趣旨
前回の投稿で稚拙なコードにリファクタリング例を頂くというありがたい経験をしました。
ご教示頂いた箇所を再度アウトプットしたいと思い、題材を見つけて投稿するものです。
データ型のまとめ自体は薄い内容で申し訳ありません。
勉強の都度更新いたします。## 代表的なデータ型
| データ型 | 説明 | サンプル |
|:-:|:-:|:-:|
| str型 | 文字列 | あいうえお |
| int型 | 整数 | 1212 |
| float型 | 浮動小数点数 | 3.14 |
| bool型 | 真偽値 | True |
| list型 | リスト | [1,2,3] |
| tuple型 | タプル | (1,2,3) |
| dict型 | 辞書型 | {“a”:1,”b”:2} |
※現状、tuple型はimmutable(変更不可能)なlist型という理解## サンプルと型の確認
“`data-type.py
x = [“楽団”,1212,3
Flaskで超簡単 奇数偶数判定
## 構成
“`
odd_or_even /
├ templates /
│ └ base.html
└ main.py
“`## プログラム
“`Python
from flask import Flask
from flask import render_template
from flask import requestapp = Flask(__name__)
@app.route(“/”, methods=[“GET”, “POST”])
def base():
value = {“result”: “”}if request.method == “POST”:
num = int(request.form[“num”])which = lambda x: “偶数” if x % 2 == 0 else “奇数”
value[“result”] = which(num)
retu
PySparkにてArrayType内のカラムにドット(.)が含まれるカラムにSELECTする方法
## 概要
PySparkにてArrayType内のカラムにドット(.)が含まれるカラムにSELECTする方法を共有します。カラム名をそのまま指定すると下記のようなエラーメッセージが表示されます。“`text
AnalysisException: No such struct field strintg in strintg.in.array
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/4b9f767b-c7c1-6de1-e207-96c6aa265d13.png)対応方法としては、ドットが含まれるカラムをバッククォート(`)で囲むことでSELECTができるようになります。シングルクォーテーション(’)ではないことに注意してください。
下記のようなスキーマの場合には、array.\`strintg.in.array\` と記載することで、データを取得することができます。カラムごとにバッククォートで囲む必要があるため、\`array.strintg.
PySparkにてStructType内のカラムにドット(.)が含まれるカラムにSELECTする方法
## 概要
PySparkにてStructType内のカラムにドット(.)が含まれるカラムにSELECTする方法を共有します。カラム名をそのまま指定すると下記のようなエラーメッセージが表示されます。“`text
AnalysisException: No such struct field strintg in strintg.in.struct
“`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/3a0cf9a9-0ea0-bb5c-b6c3-877963cb7bd2.png)対応方法としては、ドットが含まれるカラムをバッククォート(`)で囲むことでSELECTができるようになります。シングルクォーテーション(’)ではないことに注意してください。
下記のようなスキーマの場合には、struct.\`strintg.in.struct\` と記載することで、データを取得することができます。カラムごとにバッククォートで囲む必要があるため、\`struct.strin
ランダム処理
##ポイント
➀機械学習などでは、特にランダム処理が必要となる。データに対して相関性など依存関係をもたせるとデータ分析に影響をもたらす可能性があるためである。
➁ランダム処理には大きく、乱数生成と用意されデータのシャッフルを行う 二つのやり方に分類される。
##ランダム処理のまとめ一覧“`Python
import random #ランダム処理に必要なライブラリのインポート
“`・データの準備
“`Python
#0~9のリスト生成
a = list(range(10))
print(a)
>>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
“`
・データのシャッフル“`Python
#リストのシャッフル
random.shuffle(a)
print(a)
>>>[0, 1, 9, 5, 6, 4, 2, 8, 3, 7]
“`
・シャッフルしたデータを固定する。“`Python
”’データをシャッフルするごとにリストの中身が異なるのは不便なことがある。
seedを用いることで、シャッフルの固定化を行うことができる。”’
c = l
【Python】SBI証券に自動ログインしてみた
#はじめに
皆さんはPythonを使って何を実現したいでしょうか。
私は毎日の単純作業を自動化し、Lineに通知することを実現したいと思っています。
Lineは毎日使うアプリだし、LineNotifyへの連携も容易です。証券会社のHPへログインした後に毎日確認したことはありますか?
そんな第一歩としてまずは自動ログインしてみました。#環境
Python3.9
macOS Catalina10.15.7
Chrome 93.0.4577.63#事前準備
####1.Python3.X系をインストールします。(詳細は割愛します)
####2.seleniumをインストールします。
ターミナルを起動して以下のコマンドを入力します。管理者パスワードを入れるとインストールできます。“`
$ sudo pip3 install selenium
“`
この時、macOSにpython2.Xが既にインストールされている場合[pip3]ではなく[pip]でインストールした場合少しはまりますのでご注意ください。詳細は以下です。https://qiita.com/hirocki
yukicoder contest 313 参戦記
# yukicoder contest 313 参戦記
1時間遅れの参加だったけど、ABCが解けて嬉しかった.
## [A 1672 404 Not Found](https://yukicoder.me/problems/no/1672)
ステータスコードの値を100で割って4か5ならエラーコードですね.
“`python
S = int(input())if S // 100 in [4, 5]:
print(‘Yes’)
else:
print(‘No’)
“`文字列で処理してもいいですけどね.
“`python
S = input()if S[0] in ’45’:
print(‘Yes’)
else:
print(‘No’)
“`## [B 1673 Lamps on a line](https://yukicoder.me/problems/no/1673)
Ri – Li≦10 という条件なので素直にシミュレーションすればいいです.
“`python
fro
社内の複数あるオンライン事務とバッチ事務を可視化してみた
#はじめに
弊社の汎用機及びそれに群がるシステムでは、オンライン処理、バッチ処理が毎日動作しており、大、中、小合わせるとおよそ100種類以上の規模になります。その個々の事務はファイルの作成、更新、参照を繰り返して事務を進めるのですが、個々の事務は必ずしも独立していません。更に、全体を俯瞰する資料が存在しないため、システムの全体見直しを行う際に非常に困ります。#全体システムの見える化
今回、保守・業務担当にお願いし、各業務ごとに参照しているファイルのうち自業務のファイルではないものについてまとめてもらい、その情報の分析を networkx を用いて有効グラフ化した。なお,見直しにあたり,集約結果から各事務どうしの結合度を求めた。#作業の流れ
1. 全事務のオンライン、バッチシステムの参照関係
* 方法:人力(機械化も可能だが,今回は業務担当にお願いした)
* 入力:業務知見
* 出力:参照関係ファイル
1. オンライン、バッチ業務の参照関係を記した各々1ファイル(参照関係ファイル)にまとめた。
* 方法:プログラム
* 入力:参照関係ファイル
* 出力:参
Windows 10 HomeへDockerをインストールしてDjango + PostgreSQL環境作る
以前まではwindows 10 Proでないと`Docker`使えませんでしたが、Windows 10 Home でもDockerが簡単に使えるようになっています。MacとかWindows 10 Proの導入はたくさんあるけど、長年Homeで使えなかったので今回記事にします。
`Django(Python)`の記事をよく書いていますのでwindows homeで環境を構築しようと思いますすでにDocker使ってて、`Docker + Django + PostgreSQL`の環境構築したい人は[DockerでDjangoを動かす](#dockerでdjangoを動かす)から見れば構築できると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260345/a83977fe-6379-22af-a272-ae7445b05cb2.png)
# 環境
– Windows 10 Home 21H1
– Docker Desktop for Windows 4.0.0まあ、最
ABC209 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder
ABC209(AtCoder Beginner Contest 209) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。その他のABC解説、動画などは以下です。
https://qiita.com/sano192/items/54accd04df62242b70f0
##A – Counting
https://atcoder.jp/contests/abc209/tasks/abc209_a
isort で ignore_blobs を設定する
isort の実行時にファイル(パス)を無視させる設定をしようとして、書き方がぱっとわからなかったのでメモ
## 環境
– Python + poetry + Django
– 設定ファイル: pyproject.toml
– isort = “5.9.3”## ignore_blobs
ファイルを無視させるには `ignore_blobs` というオプションを設定すれば良いらしく、これを `pyproject.toml` に記述する。“`toml
[tool.isort]
ensure_newline_before_comments = true
force_grid_wrap = 0
force_single_line = false
include_trailing_comma = true
line_length = 120
multi_line_output = 3
use_parentheses = true
# こんな感じでカンマ区切りでファイルを渡す
skip_glob = “*/migrations/*.py,src/lib/*.py”
“`## 設
ニュートラルネットワーク(重みとバイアス)
##ポイント
・ニュートラルネットワークのノードに入力されたデータは ➀線形変換 ➁非線形変換 を経てノードから出力される。そのデータは出力されたノードと隣あうノードの入力データとなる。この流れが出力層まで繰り返されていく。
・線形は直線で表現され、非線形は曲線で表現できる。
・重みとバイアスを用いて入力データに対して線形変換が行われる。
・非線形変換では今回、シグモイド曲線を用いた。非線形曲線は別名活性化関数と呼ぶ。##ソース
“`Python
import numpy as np
import matplotlib.pyplot as pltdef nuro(x,y,bias):
#xとyについてそれぞれ-1.0,-0.8,-0.6 … 10個のデータを作成する
X=np.arange(-1.0,1.0,0.2)
Y=np.arange(-1.0,1.0,0.2)
#0詰めの10×10の行列を準備
z=np.zeros((10,10))for i in range(10):
for j in range(10):
#線形変
Python(enumerate,zip,dict,os.path,directionary)
#今回は、enumerate,zip,dict,os.path,directionary について整理していく。
## 1. zipの基本
“`Python
# zipでは複数のリストを同時に結び付けることができる。
list1=[‘東京’,’大阪’,’愛知’,’北海道’,’埼玉’]#都道府県のリスト
list2=[1,2,3,4,5]#数値のリスト
for i, j in zip(list1,list2):
print(‘{0}:{1}’.format(i, j))>>>
東京:1
大阪:2
愛知:3
北海道:4
埼玉:5
“`
## 2. enumerateの基本“`Python
# enumerateではインデックスとリストの中身を同時に紐つけることができる。
list1 = [‘東京’, ‘大阪’, ‘愛知’, ‘北海道’, ‘埼玉’] # 都道府県のリスト
for i, j in enumerate(list1):
print(‘{0}:{1}’.format(i, j))>>>
0:東京
1:大阪
2:愛知
3:北海道
4:埼玉
“`
##
画像ファイルのRGBの数値をcsvファイルに出力する
ドット絵をBlender(3Dモデリングソフト)に取り込むために作ったもの。
【ドット絵をBlenderでメッシュ化する試み(アドオン無し)】
①3×3のドット絵をPythonのOpenCVを使って色の濃さを数値(0〜255)に変換してcsvファイルにまとめておく。
②Blenderのスクリプトでcsvファイルをもとに、該当する座標にメッシュを作り、マテリアルを割り当てる。#blender#python pic.twitter.com/kKslePWeWl
— みかん(gtyksculpt) (@gtyksculpt) September 10, 2021
“`Python
# ファイル名などに日本語があるとエラーになります。
# 画像のピクセルごとにBlue(RGBのB)の数値0-255をcsvファイルに出力する。import cv2
import csv
import numpy
import osext = “png” # 画像ファイルの拡張子
img_name = “imgfile” # 画像ファイルの名前
csv_name = “csvfile” # csvファイルの名前fdr = r’C:\Users\User\Documents\python\pixcel’ # 画像を置く場所
csvfdr = r’C:\Users\User\Documents\python\pixcel\csv’ # csvファイルを出力する場所fname = img_name + “.” + ext
fpath = os.path
LambdaでS3のPDFを画像化して保存(Docker,Python)
# はじめに
LambdaでPdfを画像化します。windowsであればpopplerのstatic buildがあるので比較的簡単にできますが、Lambdaの環境ではコンテナを使わないとその方法では実行できません。コンテナの勉強を兼ねて作りました。
# 前提
– Dockerの実行環境
– AWS CLIとaws configureの設定# やること
– Dockerイメージの準備
– ECRの準備
– Lambdaの作成**Dockerイメージの準備**
以下のようなファイル構成です。
“`
CreatePdfThumbnail
│ app.py
│ Dockerfile
│ env.txt
└─ requirements.txt
“`Dockerfileは以下のようになっています。
“`Dockerfile
FROM public.ecr.aws/lambda/python:3.6
# ベースイメージはPython3.6環境を使いたいのでpublic.ecr.aws/lambda/python:3.6RUN y
JupyterからQtアプリケーションを動かす
# はじめに
Jupyter NotebookやJupyter QtConsoleでQtの`QWidget`や`QMainwindow`などを`show()`で動かそうとするとイベントループの関係でフリーズするか”Kernel died”になります。マジックコマンド`%gui qt`でこれは解決しますが、毎回これを実行するのもだるいし、同じコードブロックで実行すると意味がないとか結構謎な挙動を示します。
ここでは、`%gui qt`の実行を、Qtウィジェットの`__init__`内で勝手にやってくれる便利な方法を紹介します。
# ポイント
– `QWidget.__init__`の前に`QApplication`を走らせる。
– `QApplication`を走らせる前に`%gui qt`を走らせる。
– Garbage collectionで`QApplication`が持っていかれないようにする。# 方法
まずは`%gui qt`を走らせてから`QApplication`を立ち上げる関数です。
“`python
from qtpy.QtWidgets import
Python3について(@,デコーダーについて)
#デコーダについて
関数を装飾するとか、よく分からなかったので、自分で検証しました。
また、ふわっとしていますが、覚書として書きます。“`deko.py
def deko(func): #デコレータ
def tent():
print(“This”)
result = func() #これはpen()のこと
print(“a”)
return result
return tent@deko
def pen():#デコレーションされる関数
print(“is”)
return “Pen”if __name__ == “__main__”: #deko.pyで直接呼ばれた場合、Pen関数をプリントします
print(pen())>>>This
>>>is
>>>a
>>>Pen
“`1.@が付いている関数(今回だとpen())が実行される際に、print(“is”)ではなくdeko(func)が実行されます
2.deko(func)の中のfuncは、pen()の関数が実行されます
3.deko(func)の関数が終了すると、pen()に
Spotify API で遊ぶ ~NetworkX で関連アーティストを可視化~
Spotify API で色々な情報を取得できると知り、面白そうだったので遊んでみました。
n 番煎じですが、あるアーティストに対して、その関連アーティストをグラフにして可視化してみます。今回のプログラムは Google Colab で実行できるようにしています。
https://colab.research.google.com/drive/1Aev5FZ3an13QMwJuJzP9Ahekv_Oosfs1?usp=sharingGitHub は以下。
https://github.com/yousukeayada/spotify# 環境
– macOS Catalina 10.15.6
– Python 3.8.1
– spotipy==2.19.0
– networkx==2.6.2# API のテスト
まず Spotify for Developers にログインして `create an app`
https://developer.spotify.com/dashboard/
作成できたら `client id` と `client secret` を
Python で静的メソッドベース API っぽいのを実現するメモ
## 背景
インスタンスでメソッド呼んだりするのが好きくない.
(インスタンスの内部状態に依存しないようにしたい)“`
bora = Bora()
dora = bora.Dora(“test”)
“`みたいなの, 好きくない.
インスタンスをメソッドで作る API を Python で実現したい
“`
obj = Bora.Dora.NewObject(“test”)
“`みたいな? 名前空間(namespace)で機能を切り分けして.
## 名前空間の階層?
ディレクトリを作ればいいですが, ファイルが増えて面倒です.
とりあえず inner class でいけるっぽい.
“`python
class Bora:
class Dora:
…
“`## class method
静的メソッドは `@staticmethod`, `@classmethod` でいけます.
ここでは `@classmethod` 使います.“`python
class Bora:
class Dora:
@clas