0

ローカルのcgiサーバーを実行しているときに、cgiスクリプト内から.pyスクリプトを起動しようとしています。cgiスクリプトは、Google Earthからデータを受け取り、cgiスクリプトの最後に配置されたexecfile('script.py')を使用して現在呼び出されている.pyスクリプトにデータを渡すだけです。

スクリプトは最後まで実行されますが、script.pyには、プロセスの実行中に監視できるようにする必要のあるいくつかのprintステートメントが含まれています。.pyのエラーはローカルホストコンソールウィンドウに出力され、printステートメントはバッファリングされているようです。

ローカルホストコンソールの実行中に.pyから別のPythonコンソールウィンドウに出力を送信する方法はありますか?

サブプロセスモジュールは必要なことを実行する必要があるようですが、出力を変数またはログファイルに送信することしかできませんでした。印刷ステートメントをリアルタイムで表示する必要があることを除いて、これは問題ありません。

前もって感謝します

4

2 に答える 2

1

CGI スクリプトから Python スクリプトを起動しているとのことですが、CGI スクリプトがどの言語で記述されているかは指定されていません。CGI は単なるインターフェイスであるため、CGI スクリプトがどの言語で記述されているかは明確ではありません。それが最も理にかなっているからです。

最善の方法は、メッセージをログ ファイルに書き出すことです。「script.py」ファイルでは、print を使用する代わりに、次のように追加用のログ ファイルを開く必要があります。

logfile = file("/var/log/my-app-log.txt", "a")

次に、次のような print ステートメントがある場合:

print("Starting to do step 2...")

次のように logfile.write() ステートメントに変更します。

logfile.write("starting to do step 2...\n")

file.write() は改行を追加しないため、改行を個別に追加する必要があることに注意してください。

次に、tail のようなコマンドを使用して、スクリプトで何が起こっているかを確認できます。

tail -f /var/log/my-app-log.txt

これにより、ログ ファイルに追加されるデータが表示されます。

于 2009-04-03T21:36:57.230 に答える
0

popen2またはサブプロセスを使用して、出力ストリームをそのコンソールにリダイレクトしながらコンソールを起動します。

于 2009-04-03T21:41:12.617 に答える