- 1. Python + SendGrid APIでとりあえずメールを送ってみる
- 2. 【AtCoder】ABC215をPython3で解説(ABCD)
- 3. Pygame de game~インストールと実行~(Part1)
- 4. pip 全部削除
- 5. 大量にyahooメールを送信する
- 6. BeautifulSoupで最上層/最下層のタグを選択的に抽出する方法(暫定)
- 7. 【WebエンジニアのAtcoder記】入緑しました!
- 8. Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSからニュースアクセスランキングを取得(スクレイピング)してみた
- 9. 【Python】日付を入力してもらうプログラムができました
- 10. Python 3 エンジニア認定基礎試験 対策 (超初心者向け)
- 11. 代入式を使って CRC32 を一つの lambda 式にする (Python 3.8 以降)
- 12. JavaユーザーがPythonを使って印象的だった点
- 13. AWS利用して栃木県コロナデータのレポート出力を自動化する構成を考えてみた
- 14. ipwhoisを使ってwhoisで得られる情報を得る
- 15. concurrent.futuresによる非同期並行処理
- 16. Pythonでオリジナルのドット絵エディタを作る(4) – ベクター出力機能の追加
- 17. AWS SecretsManager motoを使用してpytest する方法
- 18. MQTT を file に変換するプログラム
- 19. HTTP POST を file に変換する API
- 20. リストの要素を横並びで出力する
Python + SendGrid APIでとりあえずメールを送ってみる
# はじめに
この記事は、
**「SendGrid APIを使ってPythonからメールを送ってみたい」**
という願いを持つ方に向けて執筆しています。既に既出の内容ではありますが、
私の環境では以下の記事の通りにコードを打ってみても
メールが送信できずに、少しハマったので備忘録として残しておきます。https://qiita.com/takuma-jpn/items/8acc7d3bcbe6ec606e0d
https://qiita.com/Dalice/items/cb51687aae4dba3b2b1e
# サクッと結論
※SendGridのAPI Key発行&pipでのsendgridのインストールは済んでいる前提で説明します。
済んでいない方は、上記の記事を参考にしてください。インストールしている**SendGridのverが6.8.0であれば**、
以下のように記述すればOKです。“`python:send_email.py
# using SendGrid’s Python Library
# https://github.com/sendgri
【AtCoder】ABC215をPython3で解説(ABCD)
ABC215のA-D問題の解説。
https://atcoder.jp/contests/abc215
## A – Your First Judge
### 解説条件分岐の問題。
問題文のとおりに`if`を書いてあげると`AC`。### コード
“`python
s = input()if s == ‘Hello,World!’:
print(‘AC’)
else:
print(‘WA’)
“`## B – log2(N)
### 解説$2^k \leq N$となる最大の$k$を求める問題。
$k$に1ずつ足していき、$N$を超えたら、`break` でループを回す。
### コード
“`python
n = int(input())
k = 0while True:
if 2 ** k > n:
print(k-1)
breakk += 1
“`# C – One More aab aba baa
### 解説文字列Sの各文字を並べ替えて、作成可能な文字列を辞書順
Pygame de game~インストールと実行~(Part1)
#はじめに
LINEのbotについて書いている僕ですが,Pygameもやっているのでお伝えできたらと思います。
#Pythonのインストール
Pygameを使うためにはPythonが必要です。Python3.9を使用していきます。
##MacOS
MacにはデフォルトでPython3.9がインストールされています。ターミナルで
>
“`
python3
“`でPythonが起動することを確認してください。
##WindowsOS
[Pythonホームページ](https://www.python.org/)からご自身のOSにあったPython3.9をインストールしましょう。
>
“`
python3
“`を行い、起動を確認してください。
#Pygameのインストール
ここからはMac,Windows共通です。
>
“`
pip install pygame
“`を実行します。
##Pygame確認
Pythonを起動して
>
“`python
import pygame
“`でImportErrorが出なければPygameがダウンロードできました。
##
pip 全部削除
`pip freeze | xargs pip uninstall -y`
で全削除
大量にyahooメールを送信する
下記サイトを参考に大量にメールを送信するプログラムにしました。
アカウントで1日最大500通送付できます(ヤフーの仕様でそれ以上はできない)
https://cercopes-z.com/Python/tips-mail-py.html#yahoo-36send_yahoomail_jp_3_6.pyとyahoomail.pyを同じフォルダに入れます。
yahoomail.pyを実行すればOKです。基本yahoomail.pyのヤフーアドレスとパスワード、メールの内容を編集するだけで使えます。
セーフティアドレスを使う場合send_yahoomail_jp_3_6.pyのコメントアウトしているところをいじってください。
“`send_yahoomail_jp_3_6.py
# send_yahoomail_jp_3_6.py
# Yahoo!メール 送信 (Python 3.6 以上)import mimetypes
import os
import smtplib
from email.message import EmailMessage# Yahoo!メール
BeautifulSoupで最上層/最下層のタグを選択的に抽出する方法(暫定)
# 概要
– divのみで情報が収納されているhtml(一部分)からtextを抽出したい
– div群の深さ・並列数など構造が可変であり位置指定は難しい
– かろうじて「最上層のdivは大項目」「最下層のdivは個別要素」というルールは信頼できそう
– 最上層divの内部にいくつの最下層divがあるかはまちまち
– 各最下層divのdiv深さは3だったり4だったりまちまち
– ~~このクソ構造を作ったのは誰だァ!~~
– Beautifulsoupで最上層divおよび可変深さの最下層divを抽出する方法のメモ# 詳細
## 最上層div
– `soup.find_all(‘div’, recursive=False)` で最上層のdivのみ抽出できるらしいが、私の環境では機能しなかった
– htmlの一部分からsoupを作成する際にはbodyタグが全体を囲うように付与される
– `divtops = soup.select(‘body>div’)` でbodyタグ直下のdiv(必然的に最上層)のみを抽出できた## 最下層div
– 最上層divをdiv
【WebエンジニアのAtcoder記】入緑しました!
先日行われたABC215にて,ついに入緑しました!!
かれこれ,1年以上かかった結構長い道のりになったので,これまでの勉強過程と現時点の自身のスペック等をまとめます.ついに!入緑!!!嬉しい?
ユーザ名kotakota1110
コンテスト名AtCoder Beginner Contest 215
順位2313th / 8537
パフォーマンス1031
レーティング780 → 808 (+28) Highest更新!
段級位7 級 → 6 級https://t.co/uaK7wMEpkq
ここまで長かった…— Kota@WebEngineer (@w2vw2vkk) August 21, 2021
# 自己紹介
– Webエンジニア2年目
– Web系の企業で開発運用業務に従事
– 学部は機械系,研究室配属(学部4年時)以降と修士の2年間では情報検索,NLPの研究
– 修士在学中,JASSO奨学金免除達成(半額)
– 学部が情報系のバックグラウンドではない※1
– ※1:そもそも思い出すと大学2年に進級するとき主専攻振り分けがあるのですが,情報系を選ばなかったのははじ
Pythonプログラミング:BeautifulSoup4を使ってlivedoor NEWSからニュースアクセスランキングを取得(スクレイピング)してみた
# はじめに
GPU搭載Windowsを購入して、PyTorchのコンテナイメージ(from NGC Catalog)を使えるようして、、、
それは、流行りの**自然言語処理(NLP; Natural Language Processing)**に取り組みたかったからです。
直近の投稿記事の全ては、この記事のためと言っても過言ではない。目下、以下の記事を参考に試そうとしています。
[text2text-japaneseによる要約のファインチューニング](https://note.com/npaka/n/nfd1762c42f9d)が、ivedoor NEWSを収集するところで最新※の記事も使ってみたいなと思ったり。
というわけで、Pythonプログラムで[ニュースアクセスランキング](http://news.livedoor.com/ranking/)を取得(スクレイピング)する処理を実現してみようと思います。※本稿執筆時点(2021/08/23)の情報に基づき、Code紹介と実行例を示します。
## 本稿で紹介すること
– ニュースアクセスランキング(livedo
【Python】日付を入力してもらうプログラムができました
Pythonの標準ライブラリのみを使って
ユーザーに入力してもらった日付を `[”2021″,”01″,”01″]` みたいに扱えるようにするプログラムができました。
一度Qiitaに投稿してみたかったので、自分の運営しているサイトから誰が使うねん的な記事を持ってきてみました:)1. ユーザーに日付を入力してもらう
2. 入力した日付をチェック
– 整数であるか
– 桁数に問題がないか
– 入力した日付が未来の日付になっていないか
– 存在しない日付となっていないか
3. 問題がなければリスト形式で日付が返ってくる(例:`[”2021″,”01″,”01″]`)といったプログラムのコードを書きました。
“`py
import datetimedef input_year():
# input_year では、年の入力をしてもらう
inputyear = input(“年(例:2021)を入力し、エンター “)“””strptimeで入力した数値にエラーが発生するかどうかで、正しい形式の年が
入力されたか確認を行う””
Python 3 エンジニア認定基礎試験 対策 (超初心者向け)
#1. Pythonエンジニア基礎認定試験について
2017年度から始まった民間資格です。
ExcelとかWordのMOS試験を実施している試験会場で受けられます。
例えば
オデッセイ テスティング センター
https://otc.odyssey-com.co.jp/index.html試験内容などは下記になります。
試験名:Python3 エンジニア認定基礎試験
(英名:Python 3 Certified Engineer Basic Examination)
資格名:Python3 エンジニア認定基礎試験合格者
(英名:Python 3 Basic Grammar Certification)
概要:文法基礎を問う試験
問題数:40問(すべて選択問題)
試験時間:60分
合格ライン:正答率70%
出題範囲:主教材であるオライリー・ジャパン「Pythonチュートリアル(2021年9月1日より第四版に対応します)」の掲載内容を出題範囲として、以下の比率で出題いたします。また、一般的な知識からも出題されます。
※詳細の比率は下記HPをご確認ください。
参考 : http
代入式を使って CRC32 を一つの lambda 式にする (Python 3.8 以降)
Python 3.8 から代入式 `”:=”` が使えるようなので、CRC32 を一つの lambda 式にしてみます。
“`python:Python3.8
crc32 = lambda data, P=0xedb88320, v=0xffffffff: 0xffffffff ^ [v := ((v ^ (0 if b else d)) >> 1) ^ (((v ^ (0 if b else d)) & 1) and P) for d in data for b in range(8)][-1]
“`この式は、入力ビット数(入力バイト数の 8 倍)の配列を一度作っています。
zlib の crc32 と一致するか確認します。
“`python:test.py
#!/usr/bin/env python3.8import zlib
crc32 = lambda data, P=0xedb88320, v=0xffffffff: 0xffffffff ^ [v := ((v ^ (0 if b else d)) >> 1) ^ (((v ^ (0 if b else
JavaユーザーがPythonを使って印象的だった点
# はじめに
最近Pythonを用いてLambdaを開発する機会がありました。今までJavaを中心に開発してきた自分にとっては新鮮な経験で、Javaと違ってPythonだとこのように書く・書けるのかと感じたところがありました。今回はJavaを中心に使用している開発者目線でPythonに触れて印象的だった点を書いてみようと思います。
ちなみにPythonのバージョンは3.8です。
## クラスとメソッド、アクセス制限
オブジェクト指向に慣れるとクラスにデータとメソッドをカプセル化したくなります。例えばJavaの場合だと
“`Java:PersonName.java
public class PersonName {
private String firstName;
private String lastName;public PersonName(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
AWS利用して栃木県コロナデータのレポート出力を自動化する構成を考えてみた
## はじめに
栃木県のコロナのデータは以下サイトにデータの公開と可視化がされています.
しかし, データはいつ公開されているかはわからず比較的全体的な
データの可視化しかされていません.
そこで, コロナの感染状況のデータを自動的に取得してレポートとして公開する方法を考えましたので
ご覧いただけると幸いです.
※あくまでも, レポートとして公開することを目的としているので内容等の考察は行いません.また, 今回は栃木県のコロナデータをもとにノートブックアウトプット資料の自動化を行っていますが,
他の形式データでも応用可能なので栃木県のコロナの状況には興味のない人にも適応できる内容かな
と思います.※これはあくまでも個人で作成したものです.
## データセット
https://www.pref.tochigi.lg.jp/e04/welfare/hoken-eisei/kansen/hp/coronakensahasseijyoukyou.html上記, URLのExcelデータを使用しています.
## 使用技術
開発環境* macbook air (2020) in
ipwhoisを使ってwhoisで得られる情報を得る
“`
ykishi@dezembro X-Forwarded-For % cat whois_test.py
#!/usr/bin/env python3from ipwhois import IPWhois
import json
import sysdef get_info(ip):
obj = IPWhois(ip)
whoisInfo = obj.lookup_whois()# print(type(whoisInfo))
name = whoisInfo[“nets”][0][“name”]
country = whoisInfo[“nets”][0][“country”]return name, country
if __name__ == “__main__”:
result = get_info(“51.103.36.90”)
print(type(result))
print(result)
print(“,”.join(result))
print(result[0])
print(re
concurrent.futuresによる非同期並行処理
# 単純な数値演算を、シーケンシャルに実行した場合と、別途非同期で並行して実行した場合の差異の確認
“`
ykishi@dezembro concurrent.futures-test % cat test2.py
#!/usr/bin/env python3import concurrent.futures
import urllib.request
import datetimeTOKENS = [“a”, “b”, “c”, “d”, “e”]
def calc(token):
# ————————————-
# Execute some simple calculation
# ————————————-total = 0
for i in range(100):
print(token, i)
total += ireturn token, total
if __name__ == “__main__”:
Pythonでオリジナルのドット絵エディタを作る(4) – ベクター出力機能の追加
#はじめに
[前回の記事](https://qiita.com/Hisan_twi/items/219eb88c535f9a6171bd)で作成したドット絵エディタに、描いたドット絵をベクター画像(SVG形式)で出力する機能を追加します。。
搭載する機能の仕様は以下の通りです。– ドットの角ばった形状を保ったままの形で書き出す。
– 色別に複合パスとして書き出す。
– 同じ色が隣接したドットは連結した形状として扱う。
– 白のドットは透明色として扱う(パスとして書き出さない)。事前にこの機能を実装するためのアルゴリズムを調べたところ、[DEFGHI1977さんのサイト](http://defghi1977.html.xdomain.jp/tech/dotrace/dotrace.htm)で公開されている『ドット絵SVG化スクリプト:dotrace.js』に行き着きました。node.jsのコードとアルゴリズムが公開されているので参考にしようと思いましたが、Javascriptに不慣れなこともありうまくPythonで記述することができませんでした。
そのため、SVG形式への変換は独
AWS SecretsManager motoを使用してpytest する方法
#secretsmanager motoを使用してのpytest
pytestをする必要があったので検索しましたがあまり日本語がなさそうな雰囲気。。。
別にmoto使用しなくても全てmockにしてしまってもいいけどね。
なんとなく知的好奇心が沸いたので試してみました。
なので記事にしてみました。##必要モジュール
boto3
moto
pytest##実装箇所
“`secrets_manager.py
import json
import boto3
import logging# log_level
logging.getLogger().setLevel(logging.INFO)class SecretsManagerClass:
def __init__(self, secret_name):
logging.info(secret_name)
self.secret_name = secret_namedef _open_boto_session(self):
return b
MQTT を file に変換するプログラム
次のシステムを構築する常駐プログラムです。
[Grove IoT スターターキット for SORACOM で作るリモートカメラシステム](https://qiita.com/ekzemplaro/items/541b82908cec46f6aa7b)“`py:mqtt_to_file.py
#! /usr/bin/python3
#
# mqtt_to_file.py
#
# Aug/22/2021
# ——————————————————————
import paho.mqtt.client as mqtt
import jsonMQTT_HOST = “www2.ekzemplaro.org”
MQTT_TOPIC = “sample/imageTopic”
MQTT_PORT = 1883
MQTT_KEEP_ALIVE = 60
#
# ——————————————————————
HTTP POST を file に変換する API
次のシステムを構築するAPI です。
[Grove IoT スターターキット for SORACOM で作るリモートカメラシステム](https://qiita.com/ekzemplaro/items/541b82908cec46f6aa7b)“`py:http_to_file.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# http_to_file.py
#
# Aug/22/2021
#
# ———————————————————————
import os
import sys
import json
import cgi
import fcntl
#
# ———————————————————————
def file_write_proc(file_name,str_out):
fp_out = open(file_n
リストの要素を横並びで出力する
# “”.join()の使い方
“要素の間に入れる文字”.join(リスト)
**※リストの要素がint型だと使えない**“`.py
l = [“a”, “b”, “c”, “d”]
print(“,”.join(l))
# a,b,c,d
print(“”.join(l))
# abcd
print(” “.join(l))
# a b c d
“`## リストの要素がint型の場合
str型に変換してから””.join()を使う“`.py
l = [1, 2, 3, 4]
l = [str(x) for x in l]
print(” “.join(l))
# 1 2 3 4
“`