[解決済み] スクリプトから標準出力をキャプチャしますか?
2022-10-27 18:45:36
質問
このようなスクリプトがあったとします。
# module writer.py
import sys
def write():
sys.stdout.write("foobar")
の出力をキャプチャしたいとします。
write
関数の出力をキャプチャして変数に格納し、さらに処理を行いたいとします。素朴な解決策は
# module mymodule.py
from writer import write
out = write()
print out.upper()
しかし、これはうまくいきません。別の解決策を思いつき、それは動作しますが、問題を解決するためのより良い方法がある場合は、教えてください。ありがとうございます。
import sys
from cStringIO import StringIO
# setup the environment
backup = sys.stdout
# ####
sys.stdout = StringIO() # capture output
write()
out = sys.stdout.getvalue() # release output
# ####
sys.stdout.close() # close the stream
sys.stdout = backup # restore original stdout
print out.upper() # post processing
どのように解決するのですか?
設定方法
stdout
は合理的な方法です。 もう一つは、別のプロセスとして実行することです。
import subprocess
proc = subprocess.Popen(["python", "-c", "import writer; writer.write()"], stdout=subprocess.PIPE)
out = proc.communicate()[0]
print out.upper()
関連
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] スクリプトを終了させるには?
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Pandasを使って、既存のExcelファイルに新しいシートを保存する方法は?
-
[解決済み] Pythonの文字列書式をリストで使う
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] sys.stdoutをログファイルに複製する方法は?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] virtualenvsはどこに作成するのですか?
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例