2

メールサーバーにログインして、マシンにマップされたリモートディレクトリにファイルを転送するように設定されたPythonスクリプトがあります。10分ごとにポップアップしたくないので、pywファイルとして保存しました。最初は問題なく動作していましたが、その後動作を停止し、Windows タスク スケジューラで最後に実行した結果として 0x1 が表示されました。これが発生すると、.py ファイルでまったく同じコードを実行できますが、.pyw ファイルは手動で実行しても機能しません。

pyw ファイルは、「os.system("pause")」行をコードの任意の場所に追加した場合にのみ再び機能します。これにより、そのコード行に対してコマンド ウィンドウが強制的にポップアップされます。そのラインをもう一度外すと、その日は引き続き機能しますが、翌日に来ると、再び機能しなくなります.

これをトラブルシューティングする方法について、私は頭が痛いです。それがpythonwの問題なのか、それとも干渉しているWindowsタスクスケジューラで何か問題が発生しているのか、それとも何か他のものなのかはわかりません。

4

1 に答える 1

0

同様の問題が発生しました。私のコードは python.exe を使用して期待どおりに動作しましたが、pythonw.exe では動作しませんでした。

多くのデバッグを行った後、ソースが sys.stdout.write() の呼び出しであることを特定しました。pythonw.exe では、sys.stdout が null であるため、プログラムはクラッシュしますが、黙ってクラッシュします。その呼び出しを「if sys.stdout is not None」でラップすると、プログラムは pythonw.exe でも動作し始めました。

于 2015-01-27T15:38:29.870 に答える