- 1. ファイルツリーを走査する際に特定のディレクトリの配下は無視したい
- 2. 【Plotly】PythonのPlotlyで時系列データを可視化する
- 3. kivyMD開発其の壱 初期公開説明弐篇
- 4. discord.pyで元の型のままコマンド引数を受け取る方法
- 5. Jinjaのコードをがっつり読み始めてみた①
- 6. sam local start-api に authorizer を設定(ごり押し
- 7. 駒の顔画像を自動収集する【スクレイピング – Scrapy編】
- 8. DataFrameのリスト要素をNaNが含まれていても結合する方法
- 9. Windows10で埋め込みPythonパッケージ(Python Enbedded distribution)の作成
- 10. Python: VSCodeからDocker内で動いているFastAPIにステップ実行デバッグを仕掛ける
- 11. Astropyでカラーバーがおかしい問題を解決した
- 12. 条件に一致するDatabricks Job一覧取得方法
- 13. PythonからTwitterと天気予報のAPIを使って定期ツイートをする
- 14. psycopg2.extensionsが見つからない時の対処法
- 15. ABC82メモ
- 16. Pythonでアナグラムを判別するプログラムの作成
- 17. デッキ画像から駒名称を抜き出す【テンプレートマッチング編】
- 18. AOJトライに関する知識知見の記録共有:Volume0-0060
- 19. Python: 画像データからサムネイルを作成する
- 20. pythonの処理に制限時間を設定する
ファイルツリーを走査する際に特定のディレクトリの配下は無視したい
python3でファイルツリーをトラバースしたい場合、標準ライブラリとしては`os.walk`が用意されているのですが、このAPIは指定したディレクトリの配下すべてを探索してしまうため、「特定の名称のディレクトリの配下は走査しない」というような場合には、`os.walk`を利用せず、自前で実装することになります。
以下は「カレントディレクトリからファイルツリーをトラバースしていって、ファイルが見つかったら何かする、ただし`.git`ディレクトリと`.svn`ディレクトリの配下は走査しない」ということを実装したものになります。
“`py
import pathlibstack = [pathlib.Path(‘./’)]
skips = {‘.git’, ‘.svn’}
while stack:
entry = stack.pop()
if entry.name in skips:
continue
if entry.is_dir():
stack.extend(entry.iterdir())
if entry.
【Plotly】PythonのPlotlyで時系列データを可視化する
##1.初めに
Pythonでデータを可視化する際、matplotlibとseabornが定番だが、表示範囲やスケールを変える際の手間がかかる。
インタラクティブに表示範囲・スケールを変更できる可視化ツールとして、今回Plotlyの使い方を簡単にまとめた。##2.プログラム
“`python:visualize.py
import pandas as pd
import numpy as npdf_passanger = pd.read_csv(“AirportPassengers.csv”, sep=”;”, index_col=0)
print(df_passanger.head())# Using plotly.express
import plotly.express as px#fig = px.line(df_passanger, x=”Month”, y=”Passengers”, title=’Life expectancy in Canada’)
fig = px.line(df_passanger, y=”Passengers”, title=
kivyMD開発其の壱 初期公開説明弐篇
ハロー、Qiita!いかがお過ごしでしょうか。
はい、というわけで今週もKivyMDのお時間となりました。お正月気分は残って
いないでしょうか。投稿者はまんまと残っている限りであります。いやー、もう
1正月を迎えたい(切実)。さて、新年早々のニュースとしては、とある企業が週休3日を考えているという
なんとも羨ましいニュースがありましたが、なんと言ってもこのニュースが話題を
呼んでいるのではないでしょうか。https://www.itmedia.co.jp/news/articles/2201/11/news160.html
多くの方が恩恵を受けている中、ハッと目が覚めるようなニュースでしたね。当然
私も受けていますので、改めて寄付をしようかなとも思った次第ではあります。
だって、KivyMDがなければこの投稿もなかったもの。まぁ、一旦個人の信条などは置いておいて、投稿することによって貢献をしていき
たいと思います(解決には至ってない)。今週はというと、先週に引き続き初期公開
したアプリについて解説をしていきたいと思っております。それではレッツラゴ。## 動き(繰り返
discord.pyで元の型のままコマンド引数を受け取る方法
#環境
“`
discord.py
discord==1.0.1
discord.py==1.7.3
python 3.9
“`
#問題点
discord.pyでは書き込みの引数は基本的に文字列にて受け取ります。
メンションやチャンネルの指定が含まれていたとしても、文字列です。例:
“`python:test.py
# 色々と省略していますが核心部分だけ載せます
from discord.ext import commands
import discordbot = commands.Bot(command_prefix=commands.when_mentioned_or(“-“))
class TestCommand(commands.Cog):
def __init__(self, bot):
super().__init__()
self.bot = bot@commands.command()
async def test(self,ctx,*args):
if args:
Jinjaのコードをがっつり読み始めてみた①
ひらう子です。
昨年2021年に開発エンジニアとして就職しまして、それまで個人開発ばかりやっていた頃に比べると、自分以外の人の書いたコードを読む機会がかなり増えました。また、個人で使っていてもいまいちピンとこなかったGitの扱いにも少し慣れてきました。
業務でコードを読むこと自体は良いのですが、就職して初めて触れるシステムのコードを読んでいても「納得できた」という達成感が中々得られません。どうもこのままでは自信もつきづらい感じがしますし、精神的な疲労感が強いです。
そこで、半ば趣味的な目的で、業務上の必要事項として読むことになるコードとは別に、自分の慣れ親しんだシステムのコードを読んで理解を深めていくことにしました。# Jinjaを選んだ理由
コードリーディングの題材としてJinjaを選んだ要因としては、Pythonであること、自分が使ったことがあるシステムであること、ある程度の人数の人が携わっているプロジェクトであることが挙げられます。
私は個人開発ではPythonを使ってきていますので、Pythonのプロジェクトであれば文法的に未知の領域が少なく、コードリーディングの過
sam local start-api に authorizer を設定(ごり押し
cf. https://github.com/aws/aws-sam-cli/issues/137
要望はめっちゃあるのに対応する気なさそうなので、
## ごり押し
`template.yaml` は `sam init` したサンプルそのままです。
“`yaml:template.yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-31
Description: >
python3.8Sample SAM Template for sam-app
Globals:
Function:
Timeout: 3Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
PackageType: Image
Architectures:
– x86_64
Events:
H
駒の顔画像を自動収集する【スクレイピング – Scrapy編】
# はじめに
こんにちは。逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿では、**[公式wiki](https://xn--cckp5c6czi2302avwxa.gamematome.jp/game/964/wiki/%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8)から駒の顔画像を自動収集すること**を目標にします。
今回はPythonの**スクレイピング**フレームワーク、**Scrapy**を利用してみます。# モチベーション
– オセロニアを題材にしていく上で、画像収集する場面が多いため
– Pythonでスクレイピングを実装したことが無かったので、その練習のため# スクレイピング(Scraping)とは?
> ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。
> [ウェブスクレイピング – Wikipedia ](https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%
DataFrameのリスト要素をNaNが含まれていても結合する方法
DataFrameのリスト要素を結合するとき、要素の値として`NaN`が含まれていると、結果は`NaN`になります。
“`python:期待通りに動かないコード
import pandas as pd
import numpy as npdf_test = pd.DataFrame({
“data1” :[[“1″,”2″,”3”],[“1″,”2″,”3”]],
“data2” :[[“4″,”5″,”6”],[“4″,”5″,”6”]],
“data3” :[[“7″,”8″,”9”],np.nan]
})
result = df_test[“data1”]+ df_test[“data2”]+ df_test[“data3”]
print(result)# 結果
# 0 [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 1 NaN ← [1, 2, 3, 4, 5, 6] としたい
“`単純に`fillna()`を使って`NaN`を空リストに変換しようとすると
Windows10で埋め込みPythonパッケージ(Python Enbedded distribution)の作成
# はじめに
Pythonプログラムを配布する際、顧客にPythonランタイムをインストールしなくてもいいように組み込みパッケージを作成します。
ただし以下のランタイムのインストールは必要です。“`
注釈 埋め込み用配布には Microsoft C Runtime は含まれません。これを提供するのはアプリケーションのインストーラの責務です。そのランタイムは既に以前にユーザのシステムにインストール済みかもしれませんし、Windows Update により自動で更新されているかもしれません。このことはシステムディレクトリに ucrtbase.dll があるか探せばわかります。
“`
# 環境
– windows10
– python-3.10.1-embed-amd64# 手順
## Pythonのダウンロード
公式からダウンロードします。
https://www.python.org/downloads/windows/
(今回はpython-3.10.1-embed-amd64をダウンロードしました。)
以降、PowerShellで操作します。
“`cmd
P
Python: VSCodeからDocker内で動いているFastAPIにステップ実行デバッグを仕掛ける
# 試した環境
## 開発環境(端末)
* Macbook Air (M1)
* VSCode November 2021 (version 1.63)
* Python 3.9.9 (homebrewでインストールした)## FastAPIサーバ(Docker)
* Docker Desktop for Mac 4.2.0
* Docker version 20.10.12
* docker-compose version 1.29.2### コンテナ
* python:3.11-rc linux/x86-64
### pipでインストールしたライブラリ
|Package |Version|
|—————– |——-|
|anyio |3.5.0|
|asgiref |3.4.1|
|click |8.0.3|
|fastapi |0.71.0|
|h11 |0.12.0|
|idna
Astropyでカラーバーがおかしい問題を解決した
##元々は…
`APLpy`というモジュールの`FITSFigure`という関数(?)を使用していたが,どうやら最近の`Python`のアップデートに追いついていないらしく,`3.6`か`3.7`ぐらいでアップデートが終了し,それ以降のバージョンに対応していないようだった.
`Pyenv`でバージョン管理をしているので使えるといえば使えるがなんだか気持ち悪い.ということで最新の`Python 3.10.1`でも`pip`経由できちんとインストールできた`astropy`だけでFITS画像の出力ができないか模索していた.
##そんなこんなで…
いろいろ参考にしてastropyとmatplotlibでFITS画像をプロットすることができたのだが...
“`python
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from astropy.io import fits
import pyregion
from mpl_toolkits.axes_grid1 import make_axes_loca
条件に一致するDatabricks Job一覧取得方法
# 対象読者
– チームで[Databricks](https://databricks.com/jp/)を利用している方
– 既存のJobで細かい条件に一致するものの洗い出しを行いたい方# 目的
Jobがたくさんあるが、その中でも現在定期実行されているものを確認する。
(応用すれば他の情報でも抽出可能とおもわれます。)# 流れ
– [Databricks CLI](https://docs.databricks.com/dev-tools/cli/jobs-cli.html)を用いてJob一覧とそれらに紐づく情報をjsonで出力し、
– jupyter notebookで読み込み、
– 確認したい情報を抽出しcsvで出力します。# 環境
– Mac
– Databricks on AWS
– python
– jupyter notebook### 事前準備
– [Databricks CLI](https://docs.databricks.com/dev-tools/cli/jobs-cli.html)が利用可能なように準備をしてくださ
PythonからTwitterと天気予報のAPIを使って定期ツイートをする
#初めに
タイトルの通りPythonを使用して定期ツイートをするプログラムを作りました。
使用したライブラリはtweepy、使用した天気予報APIは[天気予報 API(livedoor 天気互換)](https://weather.tsukumijima.net/)です。
lolipopというレンタルサーバー上にアップロードして定期実行させています。#目次
1.Twitter APIの取得
2.tweepyのインストールとテスト
3.天気予報APIの取得とテスト
4.最後の仕上げ
5.サーバーにアップロード
6.サーバー側にtweepyをインストール
7.サーバー上で定期実行#1.Twitter APIの取得
これが一番大変でした。
[Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ](https://qiita.com/kngsym2018/items/2524d21455aac111cdee) を参考にして登録しました。
元々持っていたアカウントを使用しました。手順は以下の通りです。1.電話番号認証をする
2.Twitter Dev
psycopg2.extensionsが見つからない時の対処法
## 概説
djangoでPostgreSQLを使ったWebアプリを作るとき、macOS(intel)の仮想環境上で`showmigration`や`makemigration`を実行しようとしたら`ModuleNotFoundError: No module named ‘psycopg2.extensions’`が出てしまったとき、wheelとsetuptoolsをアップデートした上でpsycopg2-binaryを強制的に再インストールすることで解決した。## 環境
環境は以下の通りです。
| 名称 | バージョン |
|:-:|:-:|
| macOS | Monterey(12.1) |
|django|4.0.1|
| Python | 3.8.9 |
| brew | 3.3.10 |
| pip | 21.3.1 |
| psycopg2-binary | 2.9.3 |
|PostgreSQL|14.1|## 対処法
仮想環境上で以下のコマンドを実行してください。
“`:shell
pip install –upgrade wheel
ABC82メモ
# ABC82 メモ
## [A – Round Up the Mean](https://atcoder.jp/contests/abc082/tasks/abc082_a)$a$と$b$を足して2で割った計算結果を切り上げる。
これは$a+b+1$を2で割って切り捨てたものと等しい。“`python:82A.py
a, b = map(int, input().split())ans = (a+b+1)//2
print(ans)
“`## [B – Two Anagrams](https://atcoder.jp/contests/abc082/tasks/abc082_b)
$s$と$t$を一度リストにして、$s$を昇順、$t$を降順にそれぞれ並び替え、文字列に戻す。
文字列同士の比較演算は、辞書順で比較されるため、問題文通りそのまま比較。“`python:82B.py
s = input()
t = input()s = list(s)
t = list(t)s.sort()
t.sort(reverse=T
Pythonでアナグラムを判別するプログラムの作成
# アナグラムとは
>〘名〙 (anagram) ことばのつづりを換えることによる遊び。単語をばらばらに崩し、全く別の単語を作る。LIVE が EVIL に、TIME が EMIT にの類。
出典: 精選版 日本国語大辞典例えば、evilとlive, eatとteaなどがアナグラムの例として挙げられます。
# 与えられた配列からアナグラムをグループ分けする
いくつかの単語が格納されたリスト(strs)からアナグラムとなっている単語のグループを返す関数を作ります。
“`Python
def groupingAnagram(strs):
hashMap = {} #ハッシュマップを作成for s in strs:
key =”.join(sorted(s)) # 文字列をアルファベット順にソートする
if key not in hashMap.keys():
hashMap[key] = [s] # ハッシュマップにキーを作成
e
デッキ画像から駒名称を抜き出す【テンプレートマッチング編】
# はじめに
こんにちは。逆転オセロニアのYouTubeチャンネル「まこちゃんねる」の中の人です。
本稿では、**デッキ画像から駒名称を抜き出すこと**を目標にします。
抜き出す方法はいくつか存在すると思いますが、今回は**テンプレートマッチング**を使った方法を利用してみます。
# モチベーション
リスナーさん**「デッキに入ってる駒名称が分からない!教えて!」**
まこちゃん(うーん…毎回手動で書くの面倒くさいな…ある程度自動化したさ)# テンプレートマッチングとは?
**入力画像(今回であればデッキ画像)からテンプレート画像に類似する箇所を探索する手法**です。類似度と座標を取得することができます。ただし、回転や拡縮に弱く処理も遅いのが欠点です。
AOJトライに関する知識知見の記録共有:Volume0-0060
# タスク概要
Card Game
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0060
# コード実装例
TIPS1. 例外処理含む評価パターンを追加
“`Python
import pprint, sys, timedef core(arg, adv=True, n_cards=10, s_limit=20, k=3):
my_cards = arg[0]
your_cards = arg[1]n_cards = max([n_cards] + my_cards + your_cards)
if adv:
candidates = [n for n in range(1, s_limit – sum(my_cards)) if n not in my_cards + your_cards]
else:
candidates = [n for n in range(1, n_cards + 1) if n no
Python: 画像データからサムネイルを作成する
“`python
import imghdr
from io import BytesIOfrom PIL import Image
def create_square_thumb(
binary_of_fullimage: bytes,
thumb_size: tuple, # サムネイルのサイズ(x, y)を指定する。 例:(100, 100)
thumb_quality: int, # サムネイルの品質を指定する。↓をご参照
) -> bytes:
“””
画像データのbytesから、指定したサイズと品質でサムネイルを作ってbytesで返す。
[thumb_quality: int]
フィルタ ダウンスケーリング品質 アップスケーリング品質 パフォーマンス
PIL.Image.NEAREST ⭐⭐⭐⭐⭐
PIL.Image.BOX ⭐ ⭐⭐⭐⭐
pythonの処理に制限時間を設定する
探索アルゴリズムを実装した際に、「10秒で探索!」など制限時間をつけて探索したいなと思うことがあり、色々探していると`timeout-decorator`という良さげなライブラリがありました。
#### timeout-decorator
https://github.com/pnpnpn/timeout-decoratorpipインストールすれば使えます。
制限時間が来ると強制終了するような使い方は[参考になる記事](https://qiita.com/toshitanian/items/133b42355b7867f5c458)があったのですが、探索アルゴリズムで使う際には制限時間がきたら最新の結果を返すような挙動をさせたいです。
ということで以下のようなコードになりました。
“`python:test
import time
import timeout_decoratordef long_function(i):
time.sleep(4)
return iclass time_limit_class:
def __init__