Python

ファイルパスから多種の情報を取得する os.path

しょっちゅう使いそうなのでメモ os をインポート import osファイルパスから、ディレクトリパス dirpath = os.path.os.path.dirname(filepath)ファイルパスから、ファイル名 filename = os.path.basename(filepath)ファイルパスから、拡張子とそれ以外に分…

Python スクリプトを EXE化する時のメインのスタイル

Python スクリプトをWindowsPC で、作業用に EXE化した実行ファイルで利用する場合に ・目的の処理の為にファイルを指定すること。 ・実行終了時は通知が欲しい。 と要求を満たすようにしたい。ファイルの指定=読み込ませるファイルは、Windows での作業な…

Oracle複数行INSERT をExcelから、Python でSQL文を作る

Oracle 複数行INSERTのSQL は、 INSERT ALL INTOテーブル名 [ ( column, ,,,) ] VALUES ( ・・・) INTOテーブル名 [ ( column, ,,,) ] VALUES ( ・・・) SELECT 1 FROM DUAL で、INTOテーブル名 各行に付けなければならない不便さから解放されるために、 Exc…

PyScript を試す

pyscript.netGIt-Hub : GitHub - pyscript/pyscript: Home Page: https://pyscript.net Examples: https://pyscript.net/examples 紹介記事 https://ops.jig-saw.com/tech-cate/new-tech-pyscriptHTML上でPythonコードが使える、PyScriptを用いて静的サイト…

AWS boto3 submit_job で実行する Batch Job のステータスを監視する

Batch — Boto3 Docs 1.21.3 documentation のドキュメントを頼りに、以下のような 1つの Job が動いて成功したら次の Job を実行する Lambdaを Pythonで書く。lambda_function.py のソースコード import logging import boto3 logger = logging.getLogger()…

Python で JSON をマージする方法と、Java(Jackson使用)でマージする方法

Python Python で JSON をマージするのに誰でも思いつく簡単な方法は、 JSON を辞書(dict)として読みこんで、dict(dict1, **dict2) の方法でマージする方法である。 簡単なサンプル import json j1 = ''' { "a": 1, "ary": [ 10, 11 ], "b":{ "b1": 20 } }…

Python で書く synchronized

先日、投稿したPython で書くシングルトンに続いて、 synchronized メソッド threading の Lock を使って書く。シングルトンのメソッドを synchronized にするモデルが適していると思う。 utility.py import threading def singleton(cls): instances = {} d…

Python でシングルトンを作る

Java だったら、private コンストラクタにした final クラスで synchronized の static メソッドでインスタンス取得する お決まりの実装だけど、Python はいくつか方法がある。getInstance() というメソッドでインスタンス取得させる方法 # -*- coding: utf-…

paramiko で対話式の処理

paramiko で対話式を処理するにはどうしたら良いのか? paramiko-pexpect とかを使えば良いのかもしれないが、invoke_shell() 、シェルとして実行する方法で 踏み台の先の telnet 接続してコマンドを流す方法を考えた。以下の例は最初のSSH接続の後、もう1…

文字列 format で辞書を指定

文字列フォーマットのキー名による置換はよく以下のように書くであろう。 dburl="{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}"\ .format(dialect='mysql', driver='pymysql', username='admin', password=…

ページ数、構成が大きい Flask Blueprint 使用方法

共通で使用するCSS、JS が存在しページ毎の CSS 、JS を構成しなければならず 複数ページを大量に構築する場合の、Flask Blueprintを使用する方法注意すべきは、 ・Flask で指定したテンプレートフォルダに、Blueprint でテンプレート走査するフォルダを 追…

Flask デフォルトの参照フォルダを変更する

Flask インスタンスを run 実行するスクリプトと同じ階層にあるフォルダ名 templates ・・・HTMLを置くフォルダ static ・・・CSS, JSを置くフォルダ デフォルトの構成 /root | +--- static | | | +--- common.css | +--- common.js | +--- templates | | …

Python で telnet メモ

標準ライブラリ telnetlib telnetlib --- Telnet クライアント — Python 3.9.4 ドキュメントhttps://runebook.dev/ja/docs/python/library/telnetlib PythonのtelnetlibでNW機器(Cisco)にリモートログイン - Qiita stackoverflow.comtelnetlibのTelnetでコマ…

Java → Python 実行結果の文字コード

以前、Java から Python 実行した時の結果をPython標準出力で Java が受信する方法を投稿したが、 Javaからプロセス起動で実行するPython と文字列の受け渡し - Oboe吹きプログラマの黙示録Python 標準出力→Java受け取り - Oboe吹きプログラマの黙示録 …

ディレクトリ内のファイルリストを取得

ディレクトリ内のファイルリストは、最も安易な方法は、glob を使うことであるが、 再帰的に全てのファイルリストを得るには、recursive=True が必要である。 import glob files = glob.glob("/var/tmp/**", recursive=True) for f in files: print(f) 再帰…

メモ:Windows においての Python PATH

pip 実行の為のPATH C:\Users\Xxxxxxx\AppData\Local\Programs\Python\Python39\Scripts\python 実行の為のPATH C:\Users\Xxxxxxx\AppData\Local\Programs\Python\Python39\Xxxxxxx : Windows ユーザーーーー python-daemon · PyPI

OpenCV 画像認識 detectMultiScale を実行してプロセスが終了しない

Windows環境、Python で、OpenCV で、画像から顔検出 OpenCV: Face Detection using Haar Cascades顔認識として、以下から取得したカスケードファイル opencv/data/haarcascades at master · opencv/opencv · GitHub haarcascade_frontalface_default.xml 正…

デコレータを理解する為のサンプル

単純にデコレータを理解する為のサンプルで、 AOPを書く方法という観点のサンプルメソッドをラップするという点を忘れない為のサンプル def query(param1, param2=None): res = [1, 2, 3] def _wrap1(function): def _wrap2(*args, **kwargs): print('前…

JSON loads 実行時の parse_float

JSON loads で文字列JSON を読込む時の、浮動小数点の少数桁は以下の動きをする。 import json from decimal import Decimal jstr = '{"width": 2.01285481238632125743}' dc = json.loads(jstr) print(dc['width']) dc = json.loads(jstr, parse_float=Deci…

with文

Python の with 文のサンプルは、ネット検索するとたくさんあります。 クラスを用意、__enter__ と __exit__ で前処理、後処理を実行する方法 # -*- coding: UTF-8 -*- class Foo(): def __init__(self, msg): self.msg = msg def getMsg(self): return self…

全角文字の平仮名⇔カタカナ変換

文字コード表を使用せず、計算だけで行います。 次の文字は、変換しません。 濁点、合成用 [゙ ]→ '\u3099' 半濁点、合成用 [゚ ]→ '\u309a' 濁点 [゛] → '\u309b' 半濁点 [゛] → '\u309c' よりの合略仮名 [ゟ] → '\u309f' 中点 [・] → '\u30fb' 長音 [ー] →…

ASCIIコード文字の全角変換

半角英数字だけでなく、記号文字、!"#$%&'()*+,-./:;?@[\]^_`{|}~ を含め ASCII コード文字を対応する全角文字への変換、または逆(ASCIIコードへの変換)を 正規表現ではなく、計算で行う処理を Pytnon で書いてみました。 2通りの方法が考えられます。 ・…

string Template クラス

% による文字列のフォーマット出力を書くことが多いが、 string の Templateクラスの機能も 忘れてはならない。テンプレートは、$文字接頭辞 from string import Template t = Template('$a is $b : $c') substitute( テンプレートの対象名=値 、、、) fr…

関数かどうかの型判定

オブジェクトが関数かどうかの判定方法は2通り。・isinstance() で判定する場合は、types の FunctionType で判定 import types f = lambda x:x+1 print( isinstance(f, types.FunctionType) ) # True ・callable() で判定、(呼び出せるかという文字通りの…

dict(辞書)を正規表現で参照する

dict(辞書)の参照、dict[ 正規表現 ] で参照する 場合、dict のサブクラスで以下のようにする。 import re class rdict(dict): def __getitem__(self, key): p = re.compile(key) r = [ v for k,v in self.items() if p.search(k) ] return r if len(r) > …

XPath で dict:辞書を参照

区切り文字 '/' で表現するXPath でdict:辞書を参照するものを作りました。 jsonpath-ng · PyPI ではありません。XPath の書式で配列の何番目かの指定をするインデックス [n] を単独で区切る場合、、 /key/key/[0] と書くのが正しいのか? それとも /key/ke…

JSONDecoder を継承してJSON→任意クラスへの変換

任意クラスをネストした構造への JSON読込みオブジェクト変換は、json.load() の結果のdict:辞書を 丹念にパースすればできますが、膨大なコードを書きたくありません。 json.load() の object_hook でなんとかならないのかと悩みましたが、日付時刻型など…

JSON → Object 変換(構造が単純な場合)

JSON を読込み任意のオブジェクトにする場合、 オブジェクトが単純な構造=ネストで任意の構造のオブジェクトを持たない! という比較的単純な構造の場合に限り、 次のサンプルのように、json.load実行の object_hook を定義して渡すことで解決する。JSONか…

Python プロパティのgettter & setter

クラスのプロパティ getter / setter の定義は2通りある。 ・@property デコレータの方法 ・property関数の定義の方法 ’@’が付くのを デコレータと呼ぶ? → Java に慣れしたんだ筆者はどうしても アノテーションと呼んでしまいそうだ。 @property デコレー…

JSONデシリアライズで、datetime オブジェクトにする。

JSONシリアライズで、datetime を考慮するケースは、 JSONシリアライズで、datetime に注意する - Oboe吹きプログラマの黙示録 を書いたが、デシリアライズする場合も datetime オブジェクトに変換する場合は以下のような メソッドをフックとして実行させる…