いろいろ備忘録日記

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

ConsoleZ (Console2) で コピー アンド ペースト する方法

概要

完全に自分用のメモです。

github.com

というアプリを使っているのですが、何回もコピーの仕方を忘れてしまう・・・。

superuser.com

に書いてあるように、正解は

SHIFTキーを押しながら選択する

とするとコピーできる。貼り付けは

SHIFT+INSERT

過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

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:\Python37\lib\ntpath.py", line 183, in split
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

環境

$ venv/scripts/activate

(venv) $ python --version
Python 3.7.2

(venv) $ python -m pip show pyinstaller | findstr /L /I version
Version: 3.4

解決方法

調べてみると以下の情報を発見。

github.com

Loran425って人が原因見つけたみたいで、以下の一時コミットを入れてくれています。

github.com

この変更点を、自分の環境の Lib/PyInstaller/depend/bindepend.py に入れるとうまく動くようになります。

この件は別のプルリクで現在もOpenなので、まだ入らないのかな。

github.com

備考

pyinstaller でよく指定しているオプションも、ついでにここにメモ。これもよく忘れるので。

python PyInstaller で よく指定するオプション


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

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

概要

便利なライブラリがあったので、忘れないうちにメモメモ。

github.com

非同期処理でタイムアウト処理って書くの面倒なんですが、これ使うと楽ですねー。

サンプル

以下、async-timeout モジュールのちょっとしたサンプルです。

"""
async-timeout モジュールについてのサンプルです

基本的な使い方について

REFERENCES:: http://bit.ly/2O0kYNP
"""
import asyncio
import contextlib

from async_timeout import timeout

from trypython.common.commoncls import SampleBase
from trypython.common.commonfunc import pr


# noinspection PyMethodMayBeStatic
class Sample(SampleBase):
    def exec(self):
        asyncio.run(self.async_run())

    async def async_run(self):
        # ---------------------------------------------------------------------------
        # async-timeout モジュール
        # -----------------------------------------
        # asyncio 処理を書く際のタイムアウト処理をスムーズに記述できるようにしてくれるライブラリ
        # timeoutクラスがコンテキストマネージャとして利用できるので async with で利用する
        #
        # オブジェクトには、
        #   - expired
        #   - remaining
        # というプロパティが存在しており、それぞれ
        #   - タイムアウトしたかどうか
        #   - 残り時間
        # を取得できる
        # ---------------------------------------------------------------------------

        # タイムアウト時間内に処理を終えた場合は何も起こらない
        async with timeout(1.5) as tm1:
            await asyncio.sleep(1)
        pr('timeout(1.5) vs sleep(1) expired', tm1.expired)
        pr('timeout(1.5) vs sleep(1) remaining', tm1.remaining)

        # タイムアウトが発生した場合、 asyncio.TimeoutError が raise される
        try:
            async with timeout(1) as tm2:
                await asyncio.sleep(2)
        except asyncio.TimeoutError as e:
            pr('TimeoutError', e)
        else:
            pr('timeout(1) vs sleep(2) expired', tm2.expired)
            pr('timeout(1) vs sleep(2) remaining', tm2.remaining)

        # コンテキストマネージャでタイムアウトしたかわかるので、以下でもいいかも
        with contextlib.suppress(asyncio.TimeoutError):
            async with timeout(1) as tm3:
                await asyncio.sleep(2)

        pr('timeout(1) vs sleep(2) with suppress expired', tm3.expired)
        pr('timeout(1) vs sleep(2) with suppress remaining', tm3.remaining)


def go():
    obj = Sample()
    obj.exec()


if __name__ == '__main__':
    go()

try-python/async_timeout01.py at master · devlights/try-python · GitHub

実行すると以下のような結果となります。

timeout(1.5) vs sleep(1) expired=False
timeout(1.5) vs sleep(1) remaining=0.499564656
TimeoutError=TimeoutError()
timeout(1) vs sleep(2) with suppress expired=True
timeout(1) vs sleep(2) with suppress remaining=0.0

過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com