Python
ログって大事ですよね。 でも書くのが面倒ですよね。 単体試験でデバッグするとき、デバッガやprintを使わず、loggerを使うとデバッグができて、本番環境で使えるログも仕込めます。 コスパがよいと思います。 単体試験でなにか問題が発生したら「これはlogg…
前々回、uvを使ったPython開発プロジェクトのセットアップ事例を紹介し、前回はPythonコードをpipインストール可能な配布形式にする方法を紹介しました。 今回は実行ファイルを作成する方法を紹介します。 実行ファイルという選択肢 Pythonスクリプトを配布…
前回、uvを使ったPython開発プロジェクトのセットアップ事例を紹介しました。 architecting.hateblo.jp 今回は開発したPythonコードをuvを使ってpipインストール可能な配布形式にします。 ちなみに昔、PyCharmとsetup.pyを使って作成する方法を紹介したこと…
Pythonのコードの書き方は人それぞれです。 Pythonプロジェクトのフォルダ構成、パッケージ構成にも色々なものがあります。 私自身、今まで色々と変遷してきまきました。 今回は「今はこんな感じで作ってるよ」というのをご紹介したいと思います。 簡単なス…
昨今、よく見かけるようになったuv。 「またPython環境管理ツールかよ、、、」という感もあるが、悪くなさそう。 特徴は高速なことと、venv/pip/pyenvを組み合わせたAll In Oneツールなこと。 pipenvの二の舞いとなるか?今後、メインストリームになっていく…
Pythonで非同期処理がしたい 昨今のLLMブーム、MCPブームでまたREST APIを叩く機会が増えてきました。 そしてREST APIのようなネットワーク処理は非同期処理したくなります。 AIではPythonを使うことが多いので、「Pythonでも非同期処理したい」と感じること…
はじめに 本格的なデータ解析をする場合は専用のシステムを利用することが多いと思う。 ちょっと手元のPCでデータを確認したいときに使うのがPythonのpandasやR言語だ。 ここではpandasとR言語の基本的な使い方を対比するような形で紹介していく。 なお、グ…
「素人コードにこれをパパッと加えればたちまちお店の味に」というソフトウェア業界の「味の素」がloggingです。 以前、Javaで同じような記事を書きましたが、Pythonでもログ出力をprintからloggingにするだけで雰囲気がぐっと良くなります。 architecting.h…
Seleniumとは Web ScrapingやWeb UIのテストで利用するブラウザ操作自動化ツールです。 Java、Python、C#、Ruby、JavaScript、Kotlinなどの言語で利用できます。 今回はPythonで利用します。 基本的にはテスト自動化ツール 基本的にはテスト自動化ツールと考…
Pythonで書いたコードを利用するときどうしますか? 一番簡単な方法はpythonコマンドの引数として実行することでしょう。 python mycode.py でも実行するたびにコードがあるフォルダに移動したり、逆に実行したいフォルダにコードをコピーしたり、もしくはコ…
pexpectはTelnetやSSHで実施するような対話形式の作業を自動化するPythonのライブラリです。 pexpectでは、expectで指定する正規表現をうまく設計しないと思わぬ結果を招き、デバッグ作業に時間を取られることがあります。REST APIなどを利用したAPIベースの…
最強のお絵かきソフトExcelは色々なところで色々な用途で使われています。 このためExcelファイルをプログラムで処理する機会は多いです。 PythonでExcelファイルを処理する場合はOpenPyXLを使うことが多いでしょう。 今回はOpenPyXLの基本的な使い方を紹介…
正確にはPython 3.9で書いたコードをPython 2.7に変更しました。 そのとき感じたことを記録します。 はじまり 作業効率化のために簡単なツールをPythonで作ってみました。 自分の環境では問題なく動作したのですが実環境にうつしたらエラーが発生。 pathlib…
Pythonなどのコードを見ているとよく見かける「mixin」。 今までは雰囲気でさらりと流してましたが今回、調べてみました。 mixinとは 主に多重継承が可能な言語で使われる継承の使い方です。 継承とは本来、親クラスとその子クラスの間に特別な階層関係を発…
main関数からどのように機能を呼び出すべきなのか考えています。 参考になりそうな、有名で、かつそんなに難しくなさそうなツールはないかな?と考えていたら思いついたのがpipです。 おそらくPythonで最も有名で、そこそこ高機能だけど、そんなに複雑でなさ…
f-stringはPython 3.6から導入された文字列のフォーマットを制御する方法の1つです。 +で文字列リテラルと文字列変数を結合したり、str.format()を使うよりもコードがすっきりします。 基本 文字列をf''で囲う 変数と置き換えたいときは{変数名}とする name …
Pythonでクラス名やメソッド名から動的にインスタンスやメソッドを取得する方法を紹介します。 インスタンスの取得 importlib.import_moduleを使ってmoduleをimportして、getattrでmoduleからクラスを取得するのが一般的なようです。 from importlib import …
時折、見かける「__main__.py」 ってなにか調べてみました。 python -mで実行したときに呼ばれる 「python -m パッケージ名」を実行するとそのパーケージの__main__.pyが呼ばれます。 パッケージの作り方によっては__main__.py以外のモジュールを呼び出すこ…
引数を扱うときに便利なのがParserです。 簡単に引数を処理することができ、定義も簡単です。 一度使えばsys.argvを直接処理する気なんてなくなるはずです。 PythonにはいくつかParserの選択肢がありますが標準ライブラリの中ではargparse一択だと思います。…
PyCharm + unittestでTDDっぽいことを試しました。 最後にテストコードのフォルダ階層をプロダクションコードのフォルダ階層と一致させたらそれまで動いていた単体試験の大半が動かなくなってしまいました。 ただのsys.pathの理解不足だったのですが同じこと…
PythonのコードでYAMLやJSONのファイルを参照していて、そのファイルをパッケージに含めたいときにどうすればよいか解説します。 そのようなファイルは「リソース」と呼ばれます。 コードの書き方 リソースをopenで読み込むと単体試験ではうまくいきますが、…
PyCharmでプロジェクトの名前を変更したらunittestが動かなくなったりpyenvの仮想環境や__pycache__に古い名前が残ったりして少し苦労した話です。 プロジェクト名変更 コードが完成しunittestの単体テストも全て動いた後に最初に適当に命名したプロジェクト…
XMLのnamespace Pythonでのnamespaceの扱い方 XMLのnamespace XMLでは同姓同名の要素に対して異なるnamespaceを割り当てることで名前の衝突を避けることができる。 例えばプログラミング言語のPythonを表す要素pythonと蛇のパイソンを表す要素pythonは以下の…
XML処理をする選択肢 インストール import 読み込み 書き込み Iterate 要素へのアクセス XML処理をする選択肢 PythonでXMLを処理するライブラリは多数ある。以下に有名なものを3つ紹介する。 ライブラリ 標準ライブラリ 説明 minidom o 最小のDOM実装 Elemen…
インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…
ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール 2023年以前の方式 import 読み込む 書き込む Iterate 要素へのアクセス (2025年7月29日:PyYAMLのYAML 1.2対応状況について再調査の上、更新) ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2…
インストール 使い方 トラブルシュート 引き続きPythonの実行環境構築についてまとめてみる。 ここまでPythonのバージョン管理、ライブラリ管理の必要性とそれらを実現するpyenv、そしてvirtualenvをみてきた。 architecting.hateblo.jp architecting.hatebl…
基本情報 インストール 使い方 引き続きPythonの実行環境構築についてまとめてみる。 前回はPythonバージョン管理ツール pyenvを紹介した。 Pythonで書かれたツールを実行したり、Pythonで開発する上でPythonのバージョンを切り替えることが重要なことは前回…
基本情報 インストール 使い方 トラブルシュート Pythonは人気が上昇している言語だ。Python製のツールを実行したい、Pythonでなにかを書きたい、ということは珍しくないだろう。このときPythonのバージョンが大事になる。 Pythonに限らずどんな言語で開発さ…