いろいろ備忘録日記

主に .NET とか Java とか Python絡みのメモを公開しています。

python

Pythonメモ-97 (python 3.7 + pyinstaller 3.4 + venv で TypeError が出る件)(expected str, bytes or os.PathLike object, not NoneType)

概要 忘れない内にメモメモ。 Python 3.7 + PyInstaller 3.4 + venv の環境で実行ファイルを作成しようとしたら以下のようなエラーが出ました。 8473 INFO: Building PKG (CArchive) PKG-00.pkg Traceback (most recent call last): ・・割愛・・ File "C:\P…

Pythonメモ-96 (async-timeout)(asyncio 互換のタイムアウトクラス)

概要 便利なライブラリがあったので、忘れないうちにメモメモ。 github.com 非同期処理でタイムアウト処理って書くの面倒なんですが、これ使うと楽ですねー。 サンプル 以下、async-timeout モジュールのちょっとしたサンプルです。 """ async-timeout モジ…

Pythonメモ-95 (正規表現で絶対最大量指定子を指定する)(re, regex, possessive quantifier, 強欲な量指定子, 標準モジュールではサポートされていない)

概要 昨日の devlights.hatenablog.com に引き続き、標準モジュール re でサポートされていない正規表現シリーズ。 忘れない内にメモメモ。 絶対最大量指定子って 名前がすごいイカついですが、概念的にはアトミックグループと同じようなものです。 アトミッ…

Pythonメモ-94 (正規表現でアトミックグループを指定する)(re, regex, atomic groups, 標準モジュールではサポートされていない)

概要 python で re モジュールを使って、正規表現書いていたときにたまたま知ったのでメモメモ。 python の 標準モジュール re では、アトミックグループの指定がサポートされていないんですね。 アトミックグループって何ぞや 正規表現を使って処理をする場…

Pythonメモ-93 (Pythonセキュリティベストプラクティスチートシート)(Python Security Best Practices Cheat Sheet)

概要 素晴らしいチートシートが公開されていたので、忘れない内にメモメモ。 snyk.io 10か条で記載されています。上記のページから、チートシートのPDFのダウンロードが可能なほかに、それぞれの項目についての説明があります。 このチートシートで、Bandit …

Pythonメモ-92 (PEP-448 Additional Unpacking Generalizations)(アンパック演算子の利用方法拡張, python 3.5で追加)

概要 Python 3.5 で追加された PEP-448 についてのメモ。 www.python.org 元々存在している * と ** というアンパック演算子の利用方法を拡張するというものです。 便利なので忘れないようにメモメモ。 どんな内容? 以下のケースでの利用方法が拡張されてい…

Coder.com が VSCode をリモートサーバで動作させるcode-serverをオープンソースで公開 (code-server, vscode on a remote server, github, docker)

概要 VSCodeをブラウザ上で操作して編集できるサービスを公開していた Coder から code-server がオープンソースで公開されてますね。 忘れない内にメモメモ。coderはまだバージョンがalpha版なのですが、先日触っていたらすごくいい感じでした。 ブラウザ上…

Pythonメモ-91 (python 3.7 からdictの挿入順序が保証されている)(Dictionaries now ordered, 順番を守ったまま重複を削除する)

概要 Python 3.7 から dict の挿入順序が保持されるというのが、公式に Python 言語仕様の一部であると 宣言されました 。 docs.python.org mail.python.org 公式に宣言されたのは、素晴らしいことです。 順番を守ったまま重複を削除する qiita の方に qiita…

Pythonメモ-90 (vscodeでpython のターミナルとしてIPythonが起動するようにする)(python.terminal.launchArgs, IPython)

概要 以下、自分用のメモです。 ついでに、vscode 内で python のターミナル起動 したときに、IPython 起動するようにする設定。 以下を参考にしました。 stackoverflow.com python.terminal.launchArgsにそのまんま ipython 起動するように設定してやるだけ…

Pythonメモ-89 (vscodeでパッケージ形式になってるpythonファイルをデバッグ起動)(PYTHONPATH, launch.json)

概要 以下、自分用のメモです。 自分のpythonの知識が足りていないだけなのですが、vscode で 以下のような構造 +---.vscode | launch.json | +---lib | versions.py | __init__.py | \---pkg1 main1.py __init__.py があって、main1.pyが例えば以下のように…

Pythonメモ-88 (ターミナルの行列のサイズを取得)(get_terminal_size, terminal_size, 3.3 以降)

概要 ターミナルのサイズが知りたいときがあって、最終的にめっちゃ簡単に取得できたので忘れない内にメモメモ。 最初、以下の gist を発見。 Get current terminal size on Linux, Mac, and Windows · GitHub 結構大変やん・・って思ってたら、以下のコメン…

Pythonメモ-87 (文字列から16進とか2進に変換したり戻したり)(bitstring使用)

概要 いつも忘れてしまう文字列から16進数にしたり2進数にしたりのメモ。 前に似たようなものを記事で書いた記憶があるけど、それすらも見つけることが出来なかったので。。。。 環境設定 いろいろやり方はありますが、最近こういうのは bitstring さん使っ…

Pythonメモ-86 (requirements.txtにて特定のOSの場合のみインストールするようにする)

概要 最近、conda をやめて pip と venv の環境に戻ったのですが、requirements.txt で 特定のOSの場合のみインストールするようにしたいことがたまにあります。 Windows版が存在しないライブラリとかWindows版しか存在しないものなどの場合です。 例を上げ…

Pythonメモ-85 (Evolution of the Jupyter Notebook) (jupyter lab の基本的な使い方について)

概要 jupyter lab の基本的な使い方について、個人的に一番分かりやすかったのでメモメモ。 google drive と github に連携できる extensions の説明があるのが助かりました。 towardsdatascience.com 便利になりましたねー。 $ python -m venv jupyter $ so…

Pythonメモ-84 (python-patterns) (各デザインパターンのpythonでの実装例)

概要 とても有名なリポジトリなのですが、よく忘れてしまっているのでメモメモ。 github.com コードもとても見やすいです。borgパターンの実装はなるほど~ってなりました。 以下に個人メモとして Python関連のリンク 集めていたりしていますので、よろしけ…

VSCodeのターミナルにCmderを使えるようにする

概要 VSCode のターミナルの部分に Cmder を表示して使うためのやり方をメモメモ。 cmder.net Windowsで作業するときに重宝している Cmder さん。とても便利なので VSCode のターミナルでも表示できないかなって情報探してみたらあっさりと見つかりました。…

Pythonメモ-83 (PyInstaller が python 3.7 に対応) (Add support for Python 3.7)

概要 いつもお世話になっている PyInstaller が、最新バージョンの 3.7 に対応したとのこと。 忘れないうちにメモメモ。PyInstaller の バージョン 3.4 から対応となっています。 Python 3.6 の対応は、すごく時間がかかった記憶があったのですが、今回は速…

Pythonメモ-82 (anaconda が python 3.7 に対応) (Python 3.7 Package Build Out & Miniconda Release)

概要 Anaconda / Miniconda が Python 3.7 に対応したものがリリースされたとのこと。 忘れないうちにメモメモ。 www.anaconda.com バージョンアップ python をバージョンアップするには、私は以下のようにしました。 $ conda activate xxxxx $ conda instal…

Pythonメモ-81 (python 3.7 がリリース) (data classes, breakpoint, asyncio.run, 参考情報)

概要 ついに Python 3.7 がリリースされました。 data classes とか breakpoint() とか asyncio.run() とか新たな機能が追加されていますね。 以下、自分が勉強するためのリソースです。 参考情報 Cool New Features in Python 3.7 realpython.com いつもお…

オープンソースライセンスの選び方ガイドページ (Choose an open source license, MIT license, Apache license, GNU GPLv3)

概要 Gigazine さんで以下の記事がアップされてたので、忘れないうちにメモメモ。 gigazine.net 公開されているライブラリを利用させてもらう際にもとても重要なライセンス。しっかり理解していないとあとで問題になったりします。 上記の記事で紹介されてい…

Pythonメモ-80 (dropboxがmypy-Pycharm-pluginをGithubで公開) (mypy, pycharm, プラグイン, jar)

概要 Dropbox が Github 上で mypy-PyCharm-pluginというプロジェクトを公開してくれています。 忘れないうちにメモメモ。 github.com どういうプラグイン? 元々 PyCharm には、独自の検証機能が付いています。(PEP-484) (IDE & Linter Integrations) 基本…

Pythonメモ-79 (ciso8601) (datetime, strptime, parse_datetime, 最速日付解析ライブラリ)

概要 インストール とりあえず動かしてみる 結果 通常の datetime.strptime の場合 ciso8601 備考 概要 ひょんなことで見つけたライブラリ。日付文字列をdatetimeに変換してくれるライブラリなのですが、最速みたいです。 www.peterbe.com githubページは以…

Pythonメモ-78 (relogコマンドを再帰的に実行してblgをcsvに変換) (windows, relog, pathlib, subprocess, with_suffix)

概要 relogコマンド久しぶりに使ったので、忘れないうちにメモメモ。 特定のフォルダ配下にパフォーマンスカウンタで取得したデータが バイナリ(blg) で保存されてて それをcsvに変換したいって事がありました。 どの言語でやっても対して手間は変わらないか…

Pythonメモ-77 (Pyre -- Fast Type Checking for Python) (facebook, 型チェッカー, mypy, そのうちPyCharmでサポートされるかも)

概要 忘れないうちにメモメモ。Facebook が Pyre という型チェッカーをリリースしました。mypy と同じ部類のものですね。 Pyre: Fast Type Checking for Python github.com pyre-check.org インストールは、pip で出来るとのこと。現状、LinuxとMacOSのみ対…

Pythonメモ-76 (Qt for Python) (PySide2から名称変更, ver.5.11がリリースされた, LGPL)

追記 2018/06/14 概要 ライセンスはどうなるのか? どのバージョンのPythonで使えるのか? 配布形態はどうなるのか? モバイルプラットフォームに対しての対応は? 追記 2018/06/14 blog.qt.io Qt for Python 5.11 がリリースされたみたいです。pipからイン…

GraalVM (Oracle, High-performance polyglot VM, いろんな言語に対応)

概要 Oracleさんが GraalVM というのをリリースしたみたいなので、とりあえず情報をメモメモ。 まだ試していないですが。 polyglot VM ってなってる通り、いろんな言語をサポートしているみたいですね。 実験的な段階ですが、ruby や python などもサポート…

Pythonメモ-75 (ライブラリメモ - logging) (getLogger, basicConfig, dictConfig, raven, SentryHandler)

概要 基本パターン (ログレベルの変更) 基本パターン (ファイルへの出力) 基本パターン (フォーマッタの指定) 基本パターン (日付書式の設定) 応用編 (ハンドラの指定) 応用編 (フィルタの指定) 応用編 (フォーマッタの指定) 応用編 (isEnabledFor()の使い方…

Pythonメモ-74 (ライブラリメモ - pathlib) (Path, glob, rglob, iterdir)

概要 pathlibとは pathlibモジュールの各関数 Path インスタンスの作成 (ctor) ファイルやディレクトリの存在確認 (exists) パスの結合 ( / ) HOME ディレクトリの取得 (home()) ファイル一覧取得 (iterdir()) ディレクトリかどうかの確認 (is_dir()) ファイ…

Pythonメモ-73 (condaのチャネルの優先度を操作) (prepend, channels, lowest channel, highest channel)

概要 やり方 condaにおけるチャネルリストの考え方 conda-forge を 低優先度に conda-forge を 高優先度に 現在のチャネルリストの確認 試してみた 参考情報 概要 忘れないうちにメモメモ。 condaを使っていて、チャネルを追加した際に lowest channel と hi…

Pythonメモ-72 (ライブラリメモ - itertools) (zip_longest, chain, groupby, accumulate, islice, tee)

概要 itertoolsとは itertoolsモジュールの各関数 itertools.chain itertools.zip_longest itertools.cycle itertools.repeat itertools.count itertools.accumulate itertools.compress itertools.dropwhile itertools.filterfalse dropwhileとfilterfalse…