マガジンのカバー画像

Python_Tips関連

49
運営しているクリエイター

記事一覧

Python_HEICファイルで保存された画像をJEPGに変換する #431

Python_HEICファイルで保存された画像をJEPGに変換する #431

3か月くらい前から自宅にSynologyのNASを構築して、家族の写真や動画をそこに保存するようにしました。それに伴って、これまでいくかのサービスに分散していた過去の写真も集約していたのですが、ある課題にぶつかりました。

Amazon Photosから一度PCに写真を落としてNASにアップロードしたところ、サムネイルに「HEIC」という文字列だけが出て、何の写真か一見して分からなくなったのです(

もっとみる
Python_getattr()とsetattr() #427

Python_getattr()とsetattr() #427

getattr()とsetattr()はどちらもPythonの組み込み関数で、オブジェクトの属性を扱うことができます。

Djangoのモデルでも使うことができ、値の更新をしたいときなどに便利だったので使い方をメモしておきます。

getattr()getattr(object, attribute_name, default=None) は、指定されたオブジェクトから指定された属性の値を取得する

もっとみる
LambdaでLINE Notifyを使ってみる #423

LambdaでLINE Notifyを使ってみる #423

AWS LambdaとLINE Notifyを組み合わせて、LINEに通知する仕組みを作ってみました。

ゴールイメージです↓

大きく以下の手順で実装できます。

LINE Notifyのトークンを取得する

APIを叩くコードを書く(ここではPython)

それをLambda関数にする

LINE Notifyのトークンを取得するLINE Notifyのトークンはこちらのブログに記載してくだ

もっとみる
Celeryでタスク実行されるまでの流れ #422

Celeryでタスク実行されるまでの流れ #422

CeleryはPythonの分散タスクキュー(もしくは非同期タスクキュー)として使用される技術です。分散タスクキューでは、メッセージブローカーを介してタスク(作業の単位)を送受信し、複数のワーカープロセスがこれらのタスクを非同期に実行します。

Celeryの主な用途:
●非同期処理
●分散・並列処理
●スケジューリング
●耐障害性と拡張性

Djangoとも簡単に連携でき、バックグラウンドで計算

もっとみる
Python_with句を使った色々 #381

Python_with句を使った色々 #381

Pythonのwith句とは、何かの処理の開始時と終了時に必須の処理を必ず実行してくれるものです。例えばファイルを開いたら閉じたり、データベースと接続したら接続を切ったり、です。

いくつかの代表的な使い方をこちらにメモしておきたいと思います。

with ThreadPoolExecutor() as executorThreadPoolExecutorはPythonのconcurrent.fu

もっとみる
Python_returnとyieldの使い分け #380

Python_returnとyieldの使い分け #380

Pythonにおいて、returnとyieldはどちらも関数やメソッドから値を返すためにされます。returnは一般的かと思いますが、今回yieldに触れる機会があったのでそれぞれ整理したいと思います。

returnreturnは関数から値を返すための標準的な方法です。returnステートメントは、関数の実行を終了し、指定した値を呼び出し元に返します。一度returnステートメントが実行されると

もっとみる
Python_Garbage Collectionによるメモリ開放 #378

Python_Garbage Collectionによるメモリ開放 #378

PythonのGarbage Collectionについて学んだのでメモしておきます。

Gabage CollectionとはGarbage Collection自体はPythonに限らない一般的なメモリ管理システムで、プログラムの実行中に使用されなくなったメモリを自動的に見つけ出し、開放して再利用できるようにするためのものです。

Garbage Collectionの登場以前はプログラマ自身

もっとみる
pytest_ファイルごとに並列実行する #369

pytest_ファイルごとに並列実行する #369

pytestはPython用に設計された単体テスト用フレームワークです。
私の所属するチームでも、Pythonで定義したAPIのテストで導入しています。

pytestを導入すると、テスト工程の効率化によって開発のリリースサイクルを早められる等のメリットがあります。一定以上のcaverageを確保できていれば、フレームワークやライブラリのバージョンアップもやりやすくなります。

ただ、私のチームで

もっとみる
Python_zstdを使ってRedisのデータを圧縮する #357日目

Python_zstdを使ってRedisのデータを圧縮する #357日目

zstd (zスタンダード) は2015年にFacebookから出た圧縮ライブラリで、高速な圧縮処理が可能です。今回はzstdのPythonライブラリを使用して、Redisに保存してあるデータを圧縮する手順を整理しておきます。

Redisに保存してあるデータは、以下のようにハッシュ型になっているものとします。

hash01 --- key01 --- value01 | ` key

もっとみる
pandas_Excelをデータフレームとして読み込む #355

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

pandas_SettingWithCopyWarningを回避しながらDataFrameに列を挿入する #354

SettingWithCopyWarningとは

pandasではDataFrameのget操作がデータのビューとコピーのどちらを返すのか保証しておらず、そのことに起因して発生する警告です。どのDataFrameを操作しているのか曖昧になっている、ということが警告されています。

例えば以下のようにbidderというカラムの値が'parakeet2004'であるレコードを取得(get)する場合で

もっとみる
Python_collectionsライブラリのdefaultdict #353

Python_collectionsライブラリのdefaultdict #353

Pythonの辞書を扱う際、Keyが予め定まっていれば良いですが、動的にKeyを設定していきたいシーンがあると思います。そんな時、通常の辞書だとKeyErrorが起きてうまく値が入らないケースがありますが、defaultdictを使えば柔軟に対応が可能です。

まず通常の辞書を使って、どういう時にKeyErrorが起きるのか確認します。
最初に辞書を定義します。辞書が複数層になっている部分もありま

もっとみる
Python_JSONをプログラムで編集する #345日目

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日目

Python_DRF_APIレスポンスをJSONファイルとして書き出す #343日目

Django Rest Framework を使ってAPI開発をしています。
その中でpytestを実装する時など、APIのレスポンス内容をJSONで出力したいケースがあったので、方法をメモしておきます。

DRFでは、APIサーバーをテストするためのAPIクライアントモジュールである「APIClient」が用意されています。

from rest_framework.test import AP

もっとみる