2

コンソールで正常に実行される python スクリプト (.py) があります。拡張子を (.pyw) に変更して pythonw を使用してスクリプトを実行しようとすると、動作しなくなりました。私の推測では、Google 検索から返された結果に基づいて、print ステートメントが原因で pythonw が停止していると思われます。

pythonw を実行できるように print ステートメントを無効にする便利な方法はありますか? スクリプト内の print ステートメントが多すぎます。それらを 1 つずつ変更するのは実用的ではありません。特に、通常の python の使用に戻したい場合はそうです。

ありがとう。

4

3 に答える 3

1

私にとってはうまくいった別の StackOverflow スレッドからの答えを発見しました。私は答えを支持しました。クレジットは私のものではありません。賛成票を投じたい場合は、そのリンクに移動して賛成票を投じてください。以下のリンクを参照してください。

pythonwで「print」ステートメントの出力を取得できますか?

sys.stdout に割り当てることで、stdout をグローバルにリダイレクトできます。

import sys sys.stdout = open("mylog.txt", "w") 次に、print ステートメントを含むプログラムの stdout の残りの部分が mylog.txt に移動します。

于 2014-11-11T08:23:40.647 に答える
1

たとえば、独自の印刷関数を作成し、outすべてprintの s を に変更しoutます。その後、outメソッドを一度変更して、コンソールまたはファイルに出力できます。

于 2014-11-10T05:24:36.770 に答える
1

すべての出力を /dev/null にリダイレクトするだけです。Python には、これを行うプラットフォームに依存しない方法があります。

import os
import sys

# Only redirect for pythonw not regular python.
if os.path.splitext(os.path.basename(sys.executable))[0] == 'pythonw':
    sys.stdout = open(os.devnull, 'w')
    sys.stderr = open(os.devnull, 'w')
于 2017-01-27T00:11:35.563 に答える