nikkie-ftnextの日記

イベントレポートや読書メモを発信

Python標準ライブラリ

argparseで解析した引数に型をもたせる(VS Codeで解析結果の属性の型がAnyになる問題の解消方法)

はじめに ナムコ! nikkieです。 標準ライブラリの中でとりわけヘビーユースしているargparse1。 Pythonスクリプトをコマンドラインツールにできます2。 argparseを使ったスクリプトをVS Codeで開発するうえで、型の表示を改善する小ネタです。 目次 はじめ…

同時実行数を制限できるセマフォ、イベントループによる並行処理でも使えるのか!(Pythonのasyncio.Semaphoreの素振り)

はじめに 俺もー!!ノ nikkieです。 Pythonのasyncio(イベントループによる並行処理)まわりで長い間宿題だった事項に、ついに答えを得ました! 目次 はじめに 目次 前提:asyncioを使った私の実装の伸びしろ 概念は知っていたセマフォ セマフォを使って、…

Pythonのvenvの--upgrade-depsオプションは、どこから来てどこへ行くのか

はじめに ぶっ飛ばせ!! nikkieです 先日言語処理学会でPython仮想環境の話題があり、以下のツイートに多くの反響をいただきました。 情報量を増やした記事を書きます。 ただし、すぐ役に立つ部分で言うとツイートを超える情報はなく、なぜこのオプションが…

Pythonでsortedのkey引数にlambdaを渡すときは、代わりにoperatorモジュールのitemgetterやattrgetterを使ってみませんか?

はじめに 「頑張れ!」ってきっと 愛してるって言葉♪ nikkieです。 今回はPython標準ライブラリの中から推しライブラリの1つを取り上げます。 その名もoperator! この中からitemgetterとattrgetterをご紹介! 目次 はじめに 目次 operatorのitemgetter・att…

Python標準ライブラリのurllibでだけ403 Forbiddenとなる

現時点の理解 Pythonの標準ライブラリurllib.request.urlopenを使ってHTTP通信すると、403 Forbiddenが返る urllib.error.HTTPError: HTTP Error 403: Forbidden 同じURLにrequestsを使うと、403は発生しない(正常に扱える) Cloudflareがurllibのデフォル…

#pyconapac2023 トーク「練習してテストを書けるようになるんだ」extra | unittestのおすすめリンク集

はじめに 解夏傀儡、お疲れさまでした!ゲーム自体はTwitterアカウントほど不気味じゃなくてよかった... nikkieです。 今週末はPyCon APAC 2023、現在トーク準備の真っ只中です。 今回は15分(英語で)テストが書けるようになるための知見を発表するのですが…

10/12(木)のみんなのPython勉強会 #stapy 「アレの前々週祭」に向けて、福田さんのEuroPythonトークを予習するのです

はじめに やきうは全然分かってないんですが、なんかまた阪神優勝するらしいよ! 12日夜はstapyでお祭り騒ぎ! nikkieです 次回stapyに備えて予習します。 福田さんのEuroPython 2023のトークを聞きました。 ※「予習」と書いていますが、福田さんのstapy発表…

はじめてThreadPoolExecutor(Pythonのconcurrent.futuresの素振り一歩目)

はじめに 未来で待ってる。 nikkieです1。 ここ最近イベントループを使った並行処理(asyncio)を素振りしました。 これはI/Oバウンドな処理に有効です。 I/Oバウンドな処理にはマルチスレッドも有効と聞くので、少しだけ素振りしました。 目次 はじめに 目…

Pythonのloggingモジュールのチュートリアルの中のフローチャートを、理解を深めるために写経する

はじめに ういっす✌️ nikkieです。 Pythonのloggingモジュールのドキュメントには「上級ロギングチュートリアル」というものがあります。 その中の「Logging Flow」というフローチャートについて、現時点の理解をまとめます。 目次 はじめに 目次 Logging Fl…

Pythonのloggingモジュールで、ロガーのフィルタと、ロガーのハンドラのフィルタとで、伝播されたログに対する挙動が違うことにハマりました

はじめに ヲタクに恋は、Python使いにloggingモジュールは、難しい。nikkieです loggingモジュールのフィルタでハマりまして、少し深まった理解をアウトプットします。 今回の記事の元のツイートがこちら: Pythonのロギングのフィルタってロガーにもハンド…

CSVファイルが空行を含んだり、行ごとにフィールドの数が違ったりしても、Pythonのcsvモジュールは、読み込めます!

はじめに 小さな恋のうた♪ ならぬ小さな気づきの記事、nikkieです。 Pythonのcsvモジュールに関する小さな気づき(ただしここ最近のエントリをつなぐもの)の共有です。 目次 はじめに 目次 結論 解説パート:過去エントリとのつながりを明かすんだよ 裏話:…

CSVファイルの行からデータクラスのインスタンスを作る(map / starmap / 辞書版自作doublestarmap)

はじめに ういっす✌️ nikkieです。 先日、CSVファイルの行を種々のデータ型に変換する実装を一覧にしました。 その中でデータクラスのインスタンスへの変換について、いろんなやり方があると気づいたので一覧にします。 目次 はじめに 目次 前提 csv.reader…

mapで変換! csvモジュールで読み込んだ行から、リスト/辞書/タプル/名前付きタプル/データクラス(のインスタンス)を作る

はじめに わりぃ、おれ、死んだ、nikkieです1。 CSV形式のファイルを読み込んで、行を各種データ型に変換する方法を一覧にしていきます! ドキュメントを見ていたら「これ、どんなデータ型にも変えられるんじゃないか」と着想を得たんですよ 目次 はじめに …

Python標準ライブラリ ソースコードリーディング | csv.DictReaderはcsv.readerを継承じゃなくて委譲している!

はじめに ヨーソロー!1 nikkieです。 ここ数日はcsvモジュールで知ったことをアウトプットしています。 今回はcsv.DictReaderのソースコードリーディングで知ったことです。 目次 はじめに 目次 csv.DictReaderとは csv.DictReaderのソースコードリーディン…

Pythonのcsv.readerでCSVの中のダブルクォートがどう扱われるか理解する第一歩

はじめに 私的最強概念 こころおねえちゃん nikkieです。 時として厄介な形式のCSVファイルを扱わなければならないことってありますよね。 csvモジュールを使って挑んでいったのですが、読み込んだCSVでは、ダブルクォートが閉じるまでは区切り文字で分割さ…

私、csv.readerのこと、何も分かってなかったんだな... 〜Dialectなるものを完全理解〜

はじめに デカリボ、パトラッシュ、お誕生日おめでとうございます! nikkieです1 Python標準ライブラリのcsvモジュールとの付き合いが長いのですが、このたびreader(やwriter)のdialect引数の意味をようやく完全理解しました! ここにアウトプットします。…

Pythonのloggingモジュールのドキュメントの「もっとも単純な例」を説明する 〜logging.warningの裏側で起こっていること〜

はじめに ういっす✌️ nikkieです。 先日、Pythonのloggingモジュールを完全に理解しました。 深まった理解をもとに、ドキュメントの「もっとも単純な例」を説明してみます。 目次 はじめに 目次 もっとも単純な例 logging.warningはlogging.basicConfigを呼…

Pythonのloggingを よ う や く 完全に理解しました 〜revChatGPTでdebugレベルログを出そうとした試行錯誤を題材に〜

はじめに 上達の早さは人それぞれだから、nikkieです1。 Pythonのloggingについて「完全に理解した」まで理解を深めました(これはエンジニアミームで、すぐ分からなくなるやつです)。 「ルートロガー」とか「階層構造」とか、分かるとロギングのコードの見…

venvによる仮想環境は--clearオプションを渡して初期化できます(#Python実践レシピ を勝手に補足)

はじめに 秘密はね、最後に明かされるんだよ。nikkieです。 この1月に出た書籍『Pythonエンジニア育成推進協会監修 Python実践レシピ』(以下、Python実践レシピ)を読み始めました。 venvによる仮想環境について、「この書籍にはない情報を知っているのかも…