2

WindowsXPでPython2.7を使用しています。

私のスクリプトは、tempfile.mkstempとtempfile.mkdtempに依存して、次のパターンで多数のファイルとディレクトリを作成します。

_,_tmp = mkstemp(prefix=section,dir=indir,text=True)

<do something with file>

os.close(_)

スクリプトを実行すると、常に次のエラーが発生します(ただし、正確な行番号は変更されますなど)。スクリプトが開こうとしている実際のファイルはさまざまです。

OSError: [Errno 24] Too many open files: 'path\\to\\most\\recent\\attempt\\to\\open\\file'

これをどのようにデバッグするかについて何か考えはありますか?また、追加情報が必要な場合はお知らせください。ありがとう!

編集:

使用例を次に示します。

out = os.fdopen(_,'w')
out.write("Something")
out.close()

with open(_) as p:
    p.read()
4

2 に答える 2

3

_呼び出しos.close(_)時に、一時ファイルを作成したときと同じ値が保存されていない可能性があります。の代わりに名前付き変数に割り当ててみてください_

エラーを示す非常に小さなコードスニペットを提供できれば、あなたと私たちに役立ちます。

于 2012-08-31T17:04:21.833 に答える
2

tempfile.NamedTemporaryFileを一緒に使用してみませんdelete=Falseか?これにより、Pythonファイルオブジェクトを操作できます。これは1つのボーナスです。また、コンテキストマネージャーとして使用することもできます(ファイルが適切に閉じられていることを確認するためにすべての詳細を処理する必要があります)

with tempfile.NamedTemporaryFile('w',prefix=section,dir=indir,delete=False) as f:
     pass #Do something with the file here.
于 2012-08-31T14:55:20.737 に答える