- 運営しているクリエイター
記事一覧
Python_HEICファイルで保存された画像をJEPGに変換する #431
3か月くらい前から自宅にSynologyのNASを構築して、家族の写真や動画をそこに保存するようにしました。それに伴って、これまでいくかのサービスに分散していた過去の写真も集約していたのですが、ある課題にぶつかりました。
Amazon Photosから一度PCに写真を落としてNASにアップロードしたところ、サムネイルに「HEIC」という文字列だけが出て、何の写真か一見して分からなくなったのです(
Python_getattr()とsetattr() #427
getattr()とsetattr()はどちらもPythonの組み込み関数で、オブジェクトの属性を扱うことができます。
Djangoのモデルでも使うことができ、値の更新をしたいときなどに便利だったので使い方をメモしておきます。
getattr()getattr(object, attribute_name, default=None) は、指定されたオブジェクトから指定された属性の値を取得する
LambdaでLINE Notifyを使ってみる #423
AWS LambdaとLINE Notifyを組み合わせて、LINEに通知する仕組みを作ってみました。
ゴールイメージです↓
大きく以下の手順で実装できます。
LINE Notifyのトークンを取得する
APIを叩くコードを書く(ここではPython)
それをLambda関数にする
LINE Notifyのトークンを取得するLINE Notifyのトークンはこちらのブログに記載してくだ
Celeryでタスク実行されるまでの流れ #422
CeleryはPythonの分散タスクキュー(もしくは非同期タスクキュー)として使用される技術です。分散タスクキューでは、メッセージブローカーを介してタスク(作業の単位)を送受信し、複数のワーカープロセスがこれらのタスクを非同期に実行します。
Celeryの主な用途:
●非同期処理
●分散・並列処理
●スケジューリング
●耐障害性と拡張性
Djangoとも簡単に連携でき、バックグラウンドで計算
Python_with句を使った色々 #381
Pythonのwith句とは、何かの処理の開始時と終了時に必須の処理を必ず実行してくれるものです。例えばファイルを開いたら閉じたり、データベースと接続したら接続を切ったり、です。
いくつかの代表的な使い方をこちらにメモしておきたいと思います。
with ThreadPoolExecutor() as executorThreadPoolExecutorはPythonのconcurrent.fu
Python_returnとyieldの使い分け #380
Pythonにおいて、returnとyieldはどちらも関数やメソッドから値を返すためにされます。returnは一般的かと思いますが、今回yieldに触れる機会があったのでそれぞれ整理したいと思います。
returnreturnは関数から値を返すための標準的な方法です。returnステートメントは、関数の実行を終了し、指定した値を呼び出し元に返します。一度returnステートメントが実行されると
Python_Garbage Collectionによるメモリ開放 #378
PythonのGarbage Collectionについて学んだのでメモしておきます。
Gabage CollectionとはGarbage Collection自体はPythonに限らない一般的なメモリ管理システムで、プログラムの実行中に使用されなくなったメモリを自動的に見つけ出し、開放して再利用できるようにするためのものです。
Garbage Collectionの登場以前はプログラマ自身
pytest_ファイルごとに並列実行する #369
pytestはPython用に設計された単体テスト用フレームワークです。
私の所属するチームでも、Pythonで定義したAPIのテストで導入しています。
pytestを導入すると、テスト工程の効率化によって開発のリリースサイクルを早められる等のメリットがあります。一定以上のcaverageを確保できていれば、フレームワークやライブラリのバージョンアップもやりやすくなります。
ただ、私のチームで
Python_zstdを使ってRedisのデータを圧縮する #357日目
zstd (zスタンダード) は2015年にFacebookから出た圧縮ライブラリで、高速な圧縮処理が可能です。今回はzstdのPythonライブラリを使用して、Redisに保存してあるデータを圧縮する手順を整理しておきます。
Redisに保存してあるデータは、以下のようにハッシュ型になっているものとします。
hash01 --- key01 --- value01 | ` key
pandas_Excelをデータフレームとして読み込む #355
Excelをデータフレームとして読み込んで処理したかったので、その方法をメモしておきます。
pandasのExcelFileメソッドで操作可能です。
まずはExcelを読み込んでデータフレームに変換します。
import pandas as pdexcel_path = 'sample.xlsx'# Excelを開くinput_excel = pd.ExcelFile(excel_path)#
pandas_SettingWithCopyWarningを回避しながらDataFrameに列を挿入する #354
SettingWithCopyWarningとは
pandasではDataFrameのget操作がデータのビューとコピーのどちらを返すのか保証しておらず、そのことに起因して発生する警告です。どのDataFrameを操作しているのか曖昧になっている、ということが警告されています。
例えば以下のようにbidderというカラムの値が'parakeet2004'であるレコードを取得(get)する場合で
Python_collectionsライブラリのdefaultdict #353
Pythonの辞書を扱う際、Keyが予め定まっていれば良いですが、動的にKeyを設定していきたいシーンがあると思います。そんな時、通常の辞書だとKeyErrorが起きてうまく値が入らないケースがありますが、defaultdictを使えば柔軟に対応が可能です。
まず通常の辞書を使って、どういう時にKeyErrorが起きるのか確認します。
最初に辞書を定義します。辞書が複数層になっている部分もありま
Python_JSONをプログラムで編集する #345日目
先日JSONを扱う方法について触れましたが、その続編です。
シンプルにJSONファイルを開いて、中身をPythonで編集して、(以下では)別のJSONファイルとして保存する一連の処理を記述しています。
import json# jsonファイルを読み込むwith open('append_samples.json', mode='r', encoding='utf_8') as f: a
Python_DRF_APIレスポンスをJSONファイルとして書き出す #343日目
Django Rest Framework を使ってAPI開発をしています。
その中でpytestを実装する時など、APIのレスポンス内容をJSONで出力したいケースがあったので、方法をメモしておきます。
DRFでは、APIサーバーをテストするためのAPIクライアントモジュールである「APIClient」が用意されています。
from rest_framework.test import AP