Python

【Python】Pythonで セキュアなランダム文字列生成を考える

■ はじめに システムのパスワードを決めるために、 より安全な文字列を生成する必要ができたので Pythonで生成する方法を調べてみた。 ついでに、「トークン」や「UUID」も載せておく。 ちなみに、Java版で同じことを過去にやっていた。 【Java】セキュアな…

【Python】Python ~ 基本編 / 抽象クラス ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/12/075251 https://dk521123.hatenablog.com/entry/2019/08/29/220537 の続き。 今更ながら、Pythonの抽象クラス(Abstract Class) を知ったので、メモ。 目次 【1】Pythonの抽象クラス - ABC (…

【Python】単体試験 / pytest ~ 基本編 / pytest-mock ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/12/13/224810 https://dk521123.hatenablog.com/entry/2021/11/24/163751 の続き。 PyTest の Mock について、学ぶ。 目次 【1】環境設定 【2】サンプル 例1:戻り値をMock化 - mocker.patch 例2…

【Python】単体試験 / pytest ~ 基本編 / Fixture ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/12/13/224810 の続き。 PyTest の Fixture(フィクスチャ)について、学ぶ。 目次 【1】Fixture(フィクスチャ) 【2】Scope(スコープ) 【3】サンプル 【1】Fixture(フィクスチャ) * PyTest …

【Python】Python で Parquet を扱う

■ はじめに Parquet (パーケット) 形式のファイルを取り込むことになって そのためのテストデータ(ファイル)を作りたいので、 Python で Parquet を扱う方法をメモしておく。 Parquet については、以下の関連記事を参照のこと。 Parquet ファイル https://…

【Python】Python formatter ~ black ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/02/07/000000 https://dk521123.hatenablog.com/entry/2021/11/08/221219 の続き。 色々調べて、flake8 と black を使いそうなので、 今回は、Python の フォーマッター「black」について、 設定の仕…

【Python】パッケージ管理 ~ Poetry ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/02/11/141852 で、以前、pipenv などを取り扱ったが、 新たに、Poetry(ポエトリー)なるものを教えてもらったのでメモ。 目次 【1】Poetry 1)公式サイト 【2】環境構築 1)前提条件 2)インス…

【Python】Python を奇麗に書くためのツール群

■ はじめに https://dk521123.hatenablog.com/entry/2020/02/07/000000 の続きで、Pythonのコードチェックにおいて、 flake8 以外にも、色々なツールがあふれている。 そこで、フォーマッターなども含めた Python を奇麗に書くためのツール群について、整理…

【Python】Python ~ 基本編 / bool ~

■ はじめに 文字列からbool に変換する際に 【1】の「意図した動作にならなかった例」のように 実装したが、うまくいかなかったので、メモっておく。 目次 【1】文字列 => bool に変換する際の注意点 【2】文字列 => bool に変換 1)サンプル 2)補足:…

【Python】 Python ~ 基本編 / astモジュール ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/10/05/105550 で、json化するのに普段は、json.loads()を使っていたのだが astモジュールってのがあるのは知らなかった。 目次 【1】astモジュール 【2】literal_eval() 1)json.loads() との違い…

【Python】Python ~ 基本編 / 外部コマンド実行 ~

■ はじめに https://dk521123.hatenablog.com/entry/2021/07/30/000000 で扱った pigz を Python から 起動するような処理を見た。 今回は、Python から コマンド実行することについて、まとめてみた。 目次 【0】外部コマンド実行モジュールについて 【1…

【Python】Python ~ 基本編 / 文字列比較 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/12/075251 https://dk521123.hatenablog.com/entry/2021/06/07/164858 の続き。 find() って文字列比較で使っているコードをみて、 あんまり使ったことなかったので、調べてみた。 (調べた結果、…

【Python】Pandas ~ apply / transform ~

■ はじめに Pandas の apply() と transform() について、 触れる機会があったので、メモしておく。 目次 【1】apply() 【2】transform() 【1】apply() * 行全体や列全体に対して、同じ操作をしたいときに使用する API https://pandas.pydata.org/pandas-…

【Python】Pandas ~ データ連結 / 結合編 ~

■ はじめに Pandas の データフレームの結合に関してメモっておく。 目次 【1】pd.concat() 1)オプション a) index:連結方向の指定 2)サンプル 3)参考文献 【2】pd.merge() 1)オプション a) how:結合方法を指定 b) on, left_on, right_on : キー…

【Python】Pandas ~ 基本編 / データフレーム ~

■ はじめに データフレームに関する基本的な操作をまとめておく。 目次 【1】データフレームを生成する 例1:List による生成 例2:dict による生成 【2】データをループする 例1:itertuples() を使う 例2:iterrows() を使う 例3:dict にしてから…

【Python】オフライン環境下で pip install するには

■ はじめに https://dk521123.hatenablog.com/entry/2021/07/08/161406 https://dk521123.hatenablog.com/entry/2021/07/09/115553 で 外部ネットワーク が繋がらない状態で、 個別で pip install とした際に、依存するパッケージを先に 入れておかなくては…

【トラブル】pip install wheelファイル で Read time out が発生する

■ はじめに Amazon EMR(外部接続不可) に wheelファイルを pip install しようとした時に エラー「Read time out」が発生したので、その際の出来事をメモする 目次 【1】概要 【2】原因 補足:問題の切り分けに使ったコマンド「--no-deps」 【3】解決案…

【トラブル】Pandas で Excel を扱った際のトラブル

■ はじめに Pandas を扱う機会があって、Excel を扱った際に エラーが連チャンで発生したので、メモっておく。 目次 【1】エラー「Missing optional dependency 'xlrd'」が表示 【2】エラー「Excel xlsx file; not supported」が表示 【1】エラー「Missin…

【Python】pip に関するあれこれ

■ はじめに https://dk521123.hatenablog.com/entry/2019/11/09/001342 で、pip の分量が多くなったので、分冊。 目次 【1】pip 【2】環境構築 1)pip 自体のインストール 2)pip の更新 【3】pip によるインストール 【4】インストール済みパッケージ…

【Python】Python を upgrade する

■ はじめに Airflow をインストールしようと思ったら 「ImportError: cannot import name 'ClassVar'」って エラーが出てきて、原因を調べたら Pythonを upgrade する必要があった。 ただ、結構面倒だったので、メモしておく。 目次 【1】設定環境 【2】手…

【Python】Python ~ 基本編 / 先頭・末尾の文字列除去 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/12/075251 の続き。 Python は使いやすい言語だと思うが、いけていない点がある。 今回は、その中の一部で「先頭・末尾の文字列除去」について扱う (例えば、http://xxxx/xxxxって際に「xxxx/xxx…

【Python】 Pandas ~ to_xxxx / 出力編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/22/014957 https://dk521123.hatenablog.com/entry/2020/10/14/000000 https://dk521123.hatenablog.com/entry/2021/04/07/105858 の続き。 to_dict / to_json などを使用したのだが、 他にも色々…

【Python】 Pandas ~ データ集計編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/22/014957 https://dk521123.hatenablog.com/entry/2020/10/14/000000 の続き。 Pandas のデータフレームでちょっとした集計する実装にも かなり便利なので、メモする 目次 【1】データ集計 【2…

【Python】単体試験 / unittest ~ mock編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/02/223658 https://dk521123.hatenablog.com/entry/2021/03/31/000000 の続き。 今回は、unittest の Mock を使ってみる。 これで、ほとんど標準で単体試験ができる。 目次 【1】unittest.mock …

【Python】 Python ~ 基本編 / 集合 Set ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/12/084943 https://dk521123.hatenablog.com/entry/2020/11/01/000000 https://dk521123.hatenablog.com/entry/2019/10/27/100014 https://dk521123.hatenablog.com/entry/2020/10/11/000000 の続…

【Python】単体試験 / unittest ~ 基本編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/02/223658 の続き。 目次 【1】Tips 1)基本的なテンプレート 2)出力値の確認 3)例外に関する試験 【2】サンプル 1)簡単なクラスの単体試験 2)メソッドの単体試験 3)例外の単体試験 …

【Python】 Python ~ 基本編 / map ~

■ はじめに map がいまいちわからなかったのでメモ。 目次 【1】map関数 【2】構文 【3】サンプル 例1:簡単な例 例2:拡張子を付加する 【1】map関数 * リストなどのイテレータなオブジェクト操作を 簡潔に書ける => って言ってもいまいちわからない…

【トラブル】Pandas の環境設定でのトラブル

■ はじめに https://dk521123.hatenablog.com/entry/2019/10/22/014957 で、Pandas を動かそうとしたらエラーになったので その際のトラブルシューティングを記録しておく 目次 【1】エラー「ModuleNotFoundError: No module named 'pandas'」が表示 【2】…

【Python】 Python ~ 基本編 / yield ~

■ はじめに 今回は、yield (イールド)について、メモする。 目次 【1】yield 【2】サンプル 例1:ループ 例2:__next__() 【1】yield http://ailaby.com/yield/ で言っている return との対比が理解しやすいかも。 cf. yield = 生む、引き起こす、明…

【Python】 Pandas ~ 基本編 / Excel => CSVに変換 ~

■ はじめに https://dk521123.hatenablog.com/entry/2020/11/18/000000 の続き。 AWS Glue で、Excel ファイルを開いて、 CSVに変換する必要が出てきたので、メモ。 なお、AWS Glue環境下でのExcel ファイルを扱うことに関しては 以下の関連記事を参照のこと…