2011-08-18 9 views
13

私は、サブプロセスを使用してPythonスクリプトを持っています:Windowsの実行中のPythonのblah.py対直接の.py実行すると動作が異なります

python blah.py 

出力はdo_stuff.bat(または私が実行したもの)から取得します。

これは以下のように実行された場合:

blah.py 

それから私は、do_stuff.batからのみprint文を出力を得ることはありません。

Windows Server 2003ではこれまでのところ、Python 2.5.2(さまざまな理由でそこに詰め込まれています)が見られました。 私が見関連付けられているファイルの種類のアクションを見て:

Python.File = "C:\ Python25 \ python.exe" "%1" %*

だから誰もが違いを説明できますか?

+1

私は推測する災害・その明示的に呼び出すPythonは単にファイルを呼び出すのに対し、端末の標準を作ると言うでしょう...私はおそらくそれは文句を言わないbatファイルのお手伝いをすることを知っているこの

import sys sys.stdout.write("this was printed by thread") 

ようsomethnig使用しましたパイプは他のどこかで標準化されています。私はこの愚痴を確認することはできません。 – Exelian

+0

バッチからのPython 2.6.6出力を実行するWindows 7の64ビットでは、blah.pyを単独で呼び出した後に画面に出力されます。 – Helbreder

+0

私のWindows 7 32ビットPython 2.6.6を実行している場合、それを再現することはできません。 –

答えて

1

スレッドを使用して共通の問題が発生しましたが、私のコードはすべてPythonで書かれていました。スレッドは、printを使って標準出力に書き込むことはできません。ちょうどメインスレッドはそれを行うことができます。私は

+0

これは面白いですし、おそらくサブプロセスの仕組みに関係しています。問題は解決しませんが、関連しています。 –

+2

*スレッドはprintを使って標準出力に書き込むことができません。なぜそう思うのですか? –

関連する問題