3

Wiki ページを Word ドキュメントにダウンロードできるようにするtracプラグインを変更しようとしています。pagetodoc.py は、次の行で例外をスローします。

# Call the subprocess using convenience method
retval = subprocess.call(command, shell=True, stderr=errptr, stdout=outptr, close_fds = True)

close_fdsWindowsではサポートされていないと言っています。このプロセスにより、C:\Windows\Temp にいくつかの一時ファイルが作成されるようです。パラメータを削除しようとしましたclose_fdsが、サブプロセスが書き込むファイルは無期限に開いたままになります。ファイルが後で書き込まれると、例外がスローされます。Python を使用するのはこれが初めてで、ライブラリに慣れていません。ほとんどの人はおそらく Unix マシンでコーディングしているため、これはさらに困難です。このコードを作り直す方法はありますか?

ありがとう!

4

1 に答える 1

0

close_fds stdinPython 2.6 以降 ( /stdout/stderrがリダイレクトされていない場合)は、Windows (そのリンクの後に "close_fds" を検索アップグレードを検討するかもしれません。

反対票の後の2017-11-16の更新(なぜですか?):リンクされたドキュメントから:

Windows では、close_fds を true に設定したり、stdin、stdout、または stderr を設定して標準ハンドルをリダイレクトしたりすることはできないことに注意してください。

したがって、または(デフォルト)(またはそれらをに設定)を設定してもsubprocess.callclose_fds = Trueなくてもかまいません。stdinstdoutstderrNone

subprocess.call(command, shell=True, close_fds = True)

またはあなたsubprocess.callclose_fds = False

subprocess.call(command, shell=True, stderr=errptr, stdout=outptr, close_fds = False)

または (Python >= 3.2)subprocess.callの値をclose_fds単独で計算します。

subprocess.call(command, shell=True, stderr=errptr, stdout=outptr)

于 2009-03-19T16:59:33.107 に答える