Python関連のことを調べてみた2022年10月26日

Python関連のことを調べてみた2022年10月26日
目次

【小ネタ】ctypes.Structureを使う際のアラインメント

PythonでバイナリファイルとI/Oしたいとき「ctypes.Structure」を使用するのだが、アラインメントの調整が入るのが気に入らなかった。
ドキュメントをちゃんと見たら調整方法が書いてあったので、忘備録としてメモ。
https://docs.python.org/ja/3/library/ctypes.html#structure-union-alignment-and-byte-order

# 普通の使い方
こんな感じで使用します。
“`python
import ctypes
class Test1(ctypes.Structure):
_fields_ = [
(“X”, ctypes.c_int32),
(“Y”, ctypes.c_int32),
(“Z”, ctypes.c_int32),
]
“`
この場合のサイズは12バイトです。
“`python
test1 = Test1()
ctypes.sizeof(test1)

12
“`

# アラインメントで調整されてしまう書き方
これ

元記事を表示

Spotifyのデスクトップアプリに足りない機能をタスクトレイアプリで補完してみた

# 概要
Spotify、便利ですよね
私も在宅勤務中ずっと聴いています。
ただ、使っていて不便に思う部分があったので自作アプリを作成しました。
コードは[Github](https://github.com/bitte8565/big-tray-star)にあります

# 機能概要
* spotifyでフォロー中しているアーティストの新曲を通知する
* spotifyで現在再生している曲をプレイリストに登録する(履歴用)
* 他人が作成したプレイリストが更新されたら通知する
* spotifyで再生数上位の曲をプレイリストに登録する
* 再生中の曲をブラウザでGoogle検索する

# 実行環境等
* windows10
* Python3.10
* Spotify API
* AWS Dynamodb
* AWS Systems Manager パラメータストア
パラメータストアは機密情報の取得に使っているだけです。

# 機能説明
以下、各機能の説明です。

## タスクトレイ
アプリ実行中はタスクトレイにアイコンが表示されます。
手動操作の機能は右クリックメニューから実行します

元記事を表示

Pythonで Azure Blob Storage からファイルをダウンロードしてみました

## 概要

Azure Blob Storage にあるファイルをローカルにダウンロードするPythonプログラムです。

### 実行環境

macOS Monterey 12.3.1
python 3.8.12
azure cli 2.41.0

### BLOB情報

ストレージアカウントの接続文字列の取得

“`
$ az storage account show-connection-string –name [StorageAccountName] –resource-group [ResourceGroupName] -o table
ConnectionString
——————————————————————————————————————————————————————————————-
DefaultEndpoi

元記事を表示

変数、関数の名付けについて

英語に自信がないのなら変数や関数は日本語にしよう!

圧倒的に日本語の方が語彙力が多いのは確かです。
変数が日本語だと文章を読むようにコードを読めます。
また説明のコメントも減ります!

変数名はとても大事です。誰もが言います
私たちはコードを書くとき、日本語で思考してます。
意味付け、他人がコードを読む時の理解、見返す時の理解など。

pythonの変数は初学者なら、なるべく日本語で書くようにしましょう。
数字を表すiやjなどは英語を使いますが
外国の人が読めない、あとは文字コードのエラーに対応できないなどは懸念点ですが、
始めたては日本語変数、関数をお勧めします。

最初の記事なのでここまでにします。失礼しました。

元記事を表示

Python で自作ライブラリの import を極めたいメモ

## 背景

* Python で自作ライブラリ(モジュール)を作っている, Python アプリのコードのモジュール化をしている.
* 自作ライブラリのモジュールは他の自作モジュールを参照することもある
* unittester とかではしらせずらい(GUI 使っていたりして, UI のコンポーネントをテストしたい), テスト .py つくる, なんかの test フレームワーク使うのもめんどいので, モジュールに単体テストコード書いてぱぱっと時短ですませたい..
* テストファイルわけると, vscode とか使っている場合, working directory 設定とかめんどい…
* `from . import myui` とかあるけど単体で動かす場合はエラーになってしまう…

## まとめ

* 基本相対パスは使わない. `from mymod import mod1` とか `import mymod.mod1` とかの記述にする.
* 親階層の参照が必要なら `python` で呼ばれる `.py` で `sys.path.append(“..”)` など

元記事を表示

ある漢字が日本語で使われているかどうかをざっくり判別する

# あらすじ
ある文字列が日本語かそうでないか判別する必要があって、日本語でも使われる漢字なのか、日本語では使われない漢字なのか、超ざっくり判別するスクリプトを作りました。

# 原理
原理は、Unicodeのサイトに行って

https://unicode.org/Public/UNIDATA/

Unihan.zipというファイルを取ってくると、中にUnihan_IRGSources.txtというタブ区切りテキストのファイルがあります。
こんな感じ。

“`Unihan_IRGSources.txt
U+3400 kIRG_GSource GKX-0078.01
U+3400 kIRG_JSource JA-2121
U+3400 kIRG_TSource T6-222C
U+3400 kRSUnicode 1.4
U+3400 kTotalStrokes 5

“`

U+3400という字について調べると、kIRG_JSourceとしてJA-2121という値がマップされている。
kIRG_JSourceは日本語の典拠となった原規格と、その中でのコードポイントのことみたい

元記事を表示

最近投稿した論文について 〜テーブルデータの画像化×CNNの適用×Explainable AI〜

修士の頃にやってた研究に関する論文を先週投稿しました。この記事ではそれに関して簡単にまとめます。

## 論文とコード
https://www.researchsquare.com/article/rs-2174672/v1

https://github.com/matsutakk/HACNet

## TL;DR
1. テーブルデータの特徴量とGumbel-Softmaxから得た重みとの内積で各画素値を計算
1. CNNにぶっ込む
1. 予測誤差に加えてテンプレ画像との二乗誤差も取り勾配法でEnd-to-End学習
1. XAI手法によって重要な特徴量をわかりやすく可視化する

## 背景
テーブルデータ×深層学習って、結構研究されてますよね。[調べるといろいろ出てきますね](https://www.google.com/search?q=tabular+data+deep+learning&oq=tabular+data+&aqs=chrome.1.69i57j35i39j0i512l4j0i30l4.2383j0j9&sourceid=chrome&ie=UTF-8)。TabN

元記事を表示

Azure Blob Storage の管理

## 概要

ストレージアカウント情報の取得やコンテナの確認方法等を備忘録として超簡単にまとめてみました。

### 実行環境

macOS Monterey 12.3.1
python 3.8.12
azure cli 2.41.0

### Azure へのログイン

ローカルのターミナルから Azureログインします。

“`
$ az login –tenant [tenantId]
$ az account set –subscription [subscriptionName]
“`

### ストレージアカウント情報

ストレージアカウントは既に作成されているものとします。

“`
# ストレージアカウントのリスト
$ az storage account list -g [ResourceGroupName] -o table
AccessTier AllowBlobPublicAccess CreationTime EnableHttpsTrafficOnly IsHnsEnabled Ki

元記事を表示

さくらのレンタルサーバ ライトプランでPythonとSQLiteを使ってInstagramの投稿をランダム表示するサイトを作ってみた(その4:終わりに(全コード))

# 最後に
2日間で完成させたサイトが、ねこがわりです。

https://maguiwa.saloon.jp/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2911994/e93b2175-b0ae-4416-7e88-4aade753665f.png)

![Screenshot_20221025-172010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2911994/66c40a58-0a64-de9f-0176-52168661a514.png)

media_url使えず、permalink使うことになったりした修正にプラス半日くらいかかりましたが、まあまあやりたいことはできたかなと思います。

– ここまでやるなら、スタンダードプランにしたほうがいい
– phpならもっと楽にできる

などなど、あるわけですが、エンジニアは「顧客の制限」「エンジニアの得意分野」の折り合いをつけることが大

元記事を表示

さくらのレンタルサーバ ライトプランでPythonとSQLiteを使ってInstagramの投稿をランダム表示するサイトを作ってみた(その3:PythonによるCGIの作成)

その2で自分のInstagramのフィードの情報を得るAPIの設定が終わりました。PythonによるCGIの作成に移りましょう。
# Instagram 基本表示APIの制約
Instagram基本表示APIのリファレンスを読んでおきましょう。

https://developers.facebook.com/docs/instagram-basic-display-api/reference

重要なのは、ユーザーのメディア一覧を返してくれる GET /{user-id}/media です。これまでの投稿全件返してくれるといいのですが、
– 最後に作成されたメディアの最大10Kを返します

と制限にあるので、試しにAPIを叩いてみると、30件程度しか情報が返ってきませんでした。
よって、マグロとイワシ(飼い猫)の昔の写真は表示できません。残念。でも、これから写真を撮り続けるので、データの蓄積は大切。
方針として、ページにアクセスするごとにAPIを叩いて、帰ってきた情報をSQLiteにUPSERTしていくことにしました。
# フローを考える
SQLiteを使うことが確定したので、次のよ

元記事を表示

さくらのレンタルサーバ ライトプランでPythonとSQLiteを使ってInstagramの投稿をランダム表示するサイトを作ってみた(その2:Instagram API)

その1でざっくりと仕様を決めたので、まずはInstagram基本表示APIの設定をします。
# Facebook開発者アカウントを取得する
https://developers.facebook.com/docs/development/register?locale=ja_JP

の通りに進めます。
Facebookアカウントが必要ですが、新規に作ることもできますので手順通り進めれば、ここは大丈夫です。
# アプリを登録する
開発者アカウントを作成したら、https://developers.facebook.com/ に進み、右上のログインから先に進みます。

https://developers.facebook.com/docs/development/create-an-app

の手順に沿って、アプリの設定をします。
– アプリタイプはConsumer(消費者)でOKです。
– アプリ名は適当でOKです。(私は「Cat Changing」としておきました)
– メールアドレスは普段使っているアドレスでも、開発者アカウントのアドレスでも構いません。
これでアプリの登録は完了で

元記事を表示

Azure の Access Token を一時的な環境変数として利用する

## 概要

REST-APIでいろいろなAzureサービスを利用するときに Access Token が必要になります。Pythonプログラムでサクッと動作確認したいときに一時的な環境変数として利用したいなぁ〜 という個人的思いで確認してみました。

### 実行環境

macOS Monterey 12.3.1
python 3.8.12
azure cli 2.41.0

### Azure へのログイン

ローカルのターミナルからPythonプログラムを実行できる権限のアカウントでログインします。

“`
$ az login –tenant [tenantId]
$ az account set –subscription [subscriptionName]
“`

### Access Token の生成

ターミナルから Access Token を作成します。Tokenの有効期限はどうやら1時間くらいです。

“`
(base) 22-10-25 9:01 ihoge $ az account get-access-token
{
“accessTok

元記事を表示

さくらのレンタルサーバ ライトプランでPythonとSQLiteを使ってInstagramの投稿をランダム表示するサイトを作ってみた(その1:仕様)

## さくらのレンタルサーバがPython3対応に
さくらのレンタルサーバが新サーバになり、移行ツールを使って移行を完了。Python 3.8が使えるようになりました。(Gmailが届かなくなった話は[こちら](https://qiita.com/Golfull/items/acce17e02f5d8d445bba)を参照ください)
# Pythonでサイト構築
4月から猫を飼い始め、Instagramに写真をアップロードするようになりました[@maguandiwa](https://www.instagram.com/maguandiwa/)。そうすると、過去の写真が埋もれるなと思い、Instagramのapiを使って、アップした写真をランダムに表示するサイトを作ることにし、勉強も兼ねてPythonでサイト構築しよう!Flaskあたり使えば簡単でしょう!とウキウキしながらキーボードに向かいました。
## さくらのレンタルサーバ ライトプランの壁
SSHログインして、とか、勝手に考えていたのですが、ライトプランの壁にいきなりぶつかりました。
https://rs.sakura.ad.j

元記事を表示

【Python】4つの数字を四則演算で10にする遊びをコーディングしてみた

# 概要

車のナンバーを見ると、4つの数字を使って10を作りたくなることってありますよね。

簡単な数字だといいのですが、「これって10にできなくない?」というものもあり、本当に10にできないものと、実はうまく計算すれば10にできるものもあります。

今回はPythonを使って、10にできるかどうかを機械的に判断し、できる場合はその途中式を出力するプログラムを作成してみました。

# 目次
– そもそもどういう遊びか?
– 作成するにあたり
– 実際のコーディング
– 動作結果
– さらに良いコードにするために
– まとめ

# そもそもどういう遊びか?

4種類の数字があったとき、これらを四則演算+ – × ÷を使ってピッタリ10にすれば成功!という遊びです。
例えば1 3 6 7という数字があったとき、

1 + ( 6 ÷ 3 ) + 7 = 10
7 + ( 6 – 3 ) × 1 = 10

などとして10を作ることができます。
(数字の順番は変えてもOKです)

詳細は↓
> テンパズル
https://www.kotanin0.work/entry/201

元記事を表示

DigdagをWindows環境で使う際に発生するデコードエラーを解消する

# はじめに

前回に引き続きDigdagについてである。前回の最後の方で別の問題として、UnicodeDecodeErrorが発生すると書いた。今回の改修を施して自分の環境では正常化したため、忘備録として記事にまとめた。

# 発生した事象

digdag.env.paramsやraiseしたときのエラーメッセージにマルチバイト文字が含まれる場合、セットされた以降のタスクでは次のようなエラーが発生していた。

本来ユーザー側で作成したフローの実装では想定していない、システム的なエラーである。

“`shell
2022-10-25 11:13:57 +0900 [INFO] (0020@[0:default]+FCM0022^error+error01): echo>: ***This job is error***
***This job is error***
2022-10-25 11:13:58 +0900 [INFO] (0020@[0:default]+FCM0022^error+sendmail): py>: SUBCOMMON.notifier.sendmail_e

元記事を表示

転載 【Visual Studio】Python-Djangoのプロジェクトを開こうとすると”Microsoft.PythonTools.Django.targets が見つかりませんでした”エラーが出る

消えているので転載記事です。

問題
Visual StudioでPython-Djangoを利用するプロジェクトを開こうとすると以下のエラーが出た。
![image-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175440/637bd1d2-1eaf-c484-5129-62fdc64502c3.png)

C:SampleDjangoWebAppWithSQLDB\SampleDjangoWebAppWithSQLDB.pyproj : error : インポートされたプロジェクト “C:\Program Files (x86)\Microsoft Visual Studio19\Community\MSBuild\Microsoft\VisualStudio\v16.0\Python Tools\Microsoft.PythonTools.Django.targets” が見つかりませんでした。また、$(MSBuildExtensionsPath32) – “C:\Program Fil

元記事を表示

[python] カタカナを全角と半角をパッケージ使わずに交換する

“`python
# 半角カナと全角カナを交換
def conversion_kana(kana):
zen = “アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ”
han = “アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ”
zen_da = “ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ”
han_da = “ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ”
kana_dic = {
zen: han,
han: zen,
zen_da: han_da,
han_da: zen_da
}
res = “”
# 入力文字を一文字づつ走査する
for i, k in enumerate(kana):
if k[0] in [‘゙’, ‘゚’]

元記事を表示

【Python】GRU/LSTMによる将来の電力需要予測【前回の続き】

# 1. はじめに
## 1-1. 本記事の概要と目標

今回はGRU/LSTMで将来の電力需要の予測を行います。
前回の記事を踏まえた内容となっておりますので、
まだご覧頂いていない方はこちらを先にご覧下さい。

https://qiita.com/kawanago_py/items/3a9bcbca5f8d2c309a51

前回行ったのは東京電力の公開する電気消費量の実績データにて、
RNN/GRU/LSTMの予測精度の比較、及び前処理による比較です。

前回の予測では特徴量に **“月”, “日” ,”時”, “曜日”** に加え、
**“天気”, “気温”, “降水量”, “湿度”** の8つを用いていました。

しかし完全に未知である将来の予測においては、
上記のような **気象情報も未知のデータになってしまうため、
前回のモデルでは完全に未知な将来の予測ができません
** でした。

今回の記事における分析のテーマは、
上記の

元記事を表示

namedtuple, dataclass そして datajuggler

# はじめに
Pythonで辞書を使うとき地味に面倒なので、`[KEYNAME]`での参照です。辞書をdataclass や namedtuple のようにドット表記でアトリビュート参照するように値にアクセスできるようにしたライブラリが [datajuggler](https://pypi.org/project/datajuggler/) です。

## 先人たちの功績のおかげ
といっても別段真新しいものではなくて、以下の素晴らしいプロジェクトをリファクタリングやラッピングして統合させたただけのものです。

– [python-benedict](https://github.com/fabiocaccamo/python-benedict)
– [munch](https://github.com/Infinidat/munch)
– [adict](https://github.com/mewwts/addict).
– [serialize](https://github.com/hgrecco/serialize)

# dataclass や namedtuple

元記事を表示

モデル共有 BYOM(Bring Your Own Model)

[Teradata Vantage™ – Bring Your Own Model User Guide](https://docs.teradata.com/r/Teradata-VantageTM-Bring-Your-Own-Model-User-Guide/May-2022/BYOM-Functions) [リリース番号:3.0 最終更新日:2022/6/2]の内容をもとに作成しています。

> Vantageアナリティクス BYOMシリーズのコンテンツです。
:::note infor

元記事を表示

OTHERカテゴリの最新記事