2016-09-07 8 views

答えて

1

私は2.2のバージョンをチェックしていません(そのような古いバージョンを使用している理由は何ですか?)が、私は以下のことがすべての2.xに対して有効であると思われます。


print文は、書き込みを行うファイルを示すために、>>で始まる最初の引数を認識します。

次は同じです。このように

print "foo", "bar" 
print >>sys.stdout, "foo", "bar" 

、あなたは対象のファイルとして任意のfileオブジェクトを指定することができます。

f = open("log.txt", "w") 
print >>f, "foo", "bar" 

あなたはすべてのprintのステートメント(または上記のように特定のファイルを使用していない、少なくともすべてのものを)リダイレクトしたい場合は、単にあなたの目的のファイルをsys.stdoutを置き換えることができます。

sys.stdout = open("log.txt", "w") 
print "foo", "bar" # Goes to log.txt 

あなたがそれを必要とする場合、元の標準出力はsys.__stdout__経由でまだ使用可能です。

+0

ありがとう、私はそれを使用できるようだ!しかし、目標はファイルにリダイレクトするのではなく、ロガーにリダイレクトすることです。どのように私はトリックを行うことができるオブジェクトのようなファイルを実装することができますか?ところで、私はwlst(WebLogic Language Scripting Tool)を使用して実行する必要があるスクリプトを作成しているため、Pythonの古い古いバージョンを使用しています – Abbadon

+0

2つのオプションは 'print'ステートメントの代わりに' logging'モジュールを使用するか、 'サブプロセス'はロガーと連携する外部コマンドへのパイプを開きます。 (いずれかが2.2で利用可能であると仮定します) – chepner

+0

問題は私はprintステートメントにアクセスできません!私はコードを変更することはできません。私はprintステートメントを利用する既存の関数を呼び出しています。 – Abbadon

関連する問題