問題タブ [tqdm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - バイト バッファをファイル サイズに変換する
ファイルのリストのチェックサムを計算し、それを参照ファイルと比較するプログラムを書いています。
メソッドのバイトバッファーを、使用hashfile
と同じ単位のファイルサイズに変換しようとしos.stat(path).st_size
ているので、それに応じてtqdm進行状況バーを更新できます。(ここで最後の例を実装しようとしています)
私は多くのことを試しました( len(buf)
:合計よりもはるかに大きな処理サイズを与えますint.from_bytes()
:OverflowError - intが大きすぎてfloatに変換できませんstruct.unpack_from(buf)
:一度に1バイトを読み取る必要があり、バイトを変換するにはさまざまな関数が必要です)しかしこれまでのところ何も機能しませんでした。何を検索すればよいか、見つけたソリューションを実装するには、バイトを十分に理解していないようです。
コードからの抜粋を次に示します。
python - 単体テスト用のデフォルトの tqdm 出力のキャプチャ
tqdm プログレス バーが実際に呼び出されたことを確認する単体テストを作成するにはどうすればよいですか? file
また、 kwarg を指定していない場合にプログレス バーの出力を取得するにはどうすればよいですsys.stderr
か (この場合、デフォルトで に設定する必要があります)。
を使用して出力をキャッチしようとしcontextlib.redirect_stderr
ましたが、うまくいきませんでした (詳細については以下を参照してください)。
これが私がテストしたいものです。に従ってプログレスバーを使用する方法がありますself.use_progress_bar
。オブジェクトはマルチプロセッシングのために漬けられるので、プログレスバーを所有することはできません。
プログレスバーがあることを確認する単体テストを書きたいと思います。私は次のようなものを試しました:
しかしerr
空です。問題は、ファイルを使用して tqdm をインスタンス化しない場合、デフォルトで sys.stderr になりますが、コンテキスト マネージャー内のものではないことにあるようです。これを実行しようとしたとき:
これは出力でした(キャプチャできなかったpbar出力を差し引いたもの):
そのため、コンテキスト マネージャー (プログレス バーがインスタンス化されている場所) ではsys.stderr
を指しerr
ますが、tqdm のデフォルトのは、コンテキスト マネージャーにあるにもかかわらずself.fp = sys.stderr
、まだ実数を取得しています。sys.stderr
どうして?!?!?!?また、tqdm オブジェクトに設定せずに進行状況バーをテストするにはどうすればよいですか?file=
python - Python tqdm ライブラリを使用して stdout と stderr の両方をリダイレクトする
Python で tqdm を使用して、コンソールの進行状況バーを表示しています。
tqdm ループ内で stdout と stderr の両方に時折書き込む別のライブラリの関数があります。その関数のソース コードをハッキングすることはできません。
このドキュメントfile=
は sys.stdout をリダイレクトする方法を示していますが、stdout または stderr のいずれかのみを tqdm's のパラメーターに渡すことができるため、stderr に簡単に一般化することはできません__init__
。問題を説明する最小限のコードについては、この質問とその受け入れられた回答を参照してください。
stdout と stderrの両方を一緒にリダイレクトするにはどうすればよいですか?