プログラミング初心者がアーキテクトっぽく語る

見苦しい記事も多数あるとは思いますが訂正しつつブログと共に成長していければと思います

Python

SeleniumをPythonで使う

Seleniumとは Web ScrapingやWeb UIのテストで利用するブラウザ操作自動化ツールです。 Java、Python、C#、Ruby、JavaScript、Kotlinなどの言語で利用できます。 今回はPythonで利用します。 基本的にはテスト自動化ツール 基本的にはテスト自動化ツールと考…

簡単なPython配布パッケージの作り方

Pythonで書いたコードを利用するときどうしますか? 一番簡単な方法はpythonコマンドの引数として実行することでしょう。 python mycode.py でも実行するたびにコードがあるフォルダに移動したり、逆に実行したいフォルダにコードをコピーしたり、もしくはコ…

pexpectの基本的な使い方

pexpectはTelnetやSSHで実施するような対話形式の作業を自動化するPythonのライブラリです。 pexpectでは、expectで指定する正規表現をうまく設計しないと思わぬ結果を招き、デバッグ作業に時間を取られることがあります。REST APIなどを利用したAPIベースの…

OpenPyXLの基本的な使い方

最強のお絵かきソフトExcelは色々なところで色々な用途で使われています。 このためExcelファイルをプログラムで処理する機会は多いです。 PythonでExcelファイルを処理する場合はOpenPyXLを使うことが多いでしょう。 今回はOpenPyXLの基本的な使い方を紹介…

2021年にPython 2.7を書いてみた

正確にはPython 3.9で書いたコードをPython 2.7に変更しました。 そのとき感じたことを記録します。 はじまり 作業効率化のために簡単なツールをPythonで作ってみました。 自分の環境では問題なく動作したのですが実環境にうつしたらエラーが発生。 pathlib…

mixinとは

Pythonなどのコードを見ているとよく見かける「mixin」。 今までは雰囲気でさらりと流してましたが今回、調べてみました。 mixinとは 主に多重継承が可能な言語で使われる継承の使い方です。 継承とは本来、親クラスとその子クラスの間に特別な階層関係を発…

pipの呼び出し部分の設計を調べてみた

main関数からどのように機能を呼び出すべきなのか考えています。 参考になりそうな、有名で、かつそんなに難しくなさそうなツールはないかな?と考えていたら思いついたのがpipです。 おそらくPythonで最も有名で、そこそこ高機能だけど、そんなに複雑でなさ…

f-stringの使い型

f-stringはPython 3.6から導入された文字列のフォーマットを制御する方法の1つです。 +で文字列リテラルと文字列変数を結合したり、str.format()を使うよりもコードがすっきりします。 基本 文字列をf''で囲う 変数と置き換えたいときは{変数名}とする name …

PythonでReflection

Pythonでクラス名やメソッド名から動的にインスタンスやメソッドを取得する方法を紹介します。 インスタンスの取得 importlib.import_moduleを使ってmoduleをimportして、getattrでmoduleからクラスを取得するのが一般的なようです。 from importlib import …

__main__.pyってなに

時折、見かける「__main__.py」 ってなにか調べてみました。 python -mで実行したときに呼ばれる 「python -m パッケージ名」を実行するとそのパーケージの__main__.pyが呼ばれます。 パッケージの作り方によっては__main__.py以外のモジュールを呼び出すこ…

Pythonで引数を扱う

引数を扱うときに便利なのがParserです。簡単に引数を処理することができ、定義も簡単です。一度使えばsys.argvを直接処理する気なんてなくなるはずです。 PythonではいくつかParserの選択肢がありますがargparse一択だと思います。 標準ライブラリの選択肢 …

PyCharmでテストコードのフォルダを多階層にしたらテストが動かなくなった

PyCharm + unittestでTDDっぽいことを試しました。最後にテストコードのフォルダ階層をプロジェクトコードのフォルダ階層と一致させたらそれまで動いていた単体試験の大半が動かなくなってしまいました。 ただのsys.pathの理解不足だったのですが同じことで…

Pythonの配布パッケージに.py以外のファイルを含めたいとき

PythonのコードでYAMLやJSONのファイルを参照していて、そのファイルをパッケージに含めたいときにどうすればよいか解説します。 そのようなファイルは「リソース」と呼ばれます。 コードの書き方 リソースをopenで読み込むと単体試験ではうまくいきますが、…

PyCharmでプロジェクトフォルダをRenameしたらちょっと面倒なことになった

PyCharmでプロジェクトの名前を変更したらunittestが動かなくなったりpyenvの仮想環境や__pycache__に古い名前が残ったりして少し苦労した話です。 プロジェクト名変更 コードが完成しunittestの単体テストも全て動いた後に最初に適当に命名したプロジェクト…

namespaceがあるXMLをPythonで処理する

XMLのnamespace Pythonでのnamespaceの扱い方 XMLのnamespace XMLでは同姓同名の要素に対して異なるnamespaceを割り当てることで名前の衝突を避けることができる。 例えばプログラミング言語のPythonを表す要素pythonと蛇のパイソンを表す要素pythonは以下の…

Element TreeによるXMLの処理

XML処理をする選択肢 インストール import 読み込み 書き込み Iterate 要素へのアクセス XML処理をする選択肢 PythonでXMLを処理するライブラリは多数ある。以下に有名なものを3つ紹介する。 ライブラリ 標準ライブラリ 説明 minidom o 最小のDOM実装 Elemen…

jsonモジュールによるJSONの処理

インストール import ファイルから読み込む strオブジェクトをJSON形式で読み込む ファイルへ書き込む strオブジェクトを作成 Iterate 要素へのアクセス PythonでJSONを取り扱うならjson一択だ。 簡単な使い方ならPyYAMLやruamel.yamlと大差ない。しかしJSON…

ruamel.yamlによるYAMLの処理

ruamel.yamlとPyYAML 比較 YAML 1.2対応 インストール import 読み込む 書き込む Iterate 要素へのアクセス ruamel.yamlとPyYAML PythonでYAMLを扱うには選択肢が2つある。 PyYAML ruamel.yaml 今日時点で有名なのはPyYAMLの方だがアップデートが収束しつつ…

pipenvによるPython仮想環境管理

インストール 使い方 トラブルシュート 引き続きPythonの実行環境構築についてまとめてみる。 ここまでPythonのバージョン管理、ライブラリ管理の必要性とそれらを実現するpyenv、そしてvirtualenvをみてきた。 architecting.hateblo.jp architecting.hatebl…

virtualenvによるパッケージ管理

基本情報 インストール 使い方 引き続きPythonの実行環境構築についてまとめてみる。 前回はPythonバージョン管理ツール pyenvを紹介した。 Pythonで書かれたツールを実行したり、Pythonで開発する上でPythonのバージョンを切り替えることが重要なことは前回…

pyenvによるPythonバージョン管理

基本情報 インストール 使い方 トラブルシュート Pythonは人気が上昇している言語だ。Python製のツールを実行したい、Pythonでなにかを書きたい、ということは珍しくないだろう。このときPythonのバージョンが大事になる。 Pythonに限らずどんな言語で開発さ…