2012-01-28 9 views
2

Pythonで可変数のファイルを開くための「最良の」方法とは何ですか?可変数のリソース用のPython "RAII"イディオムとは何ですか?

ファイルの数が手元にわからない場合は、「どのように」使用するか分かりません。

(着信RAII/C++から)

+1

関連するhttp://stackoverflow.com/questions/5071121/raii-in-python-automatic-destruction-when-leaving-a-scope –

+1

「ファイルの数は以前には分かっていません」と、おそらく意味することができます。未知数のファイルを開き(開いたままにしておく)このアルゴリズムの説明を提供できますか? –

+1

例:コマンドラインで可変数のファイル名をとり、すべてを行ごとにstdoutにインターリーブするスクリプト。 – user1174648

答えて

4

さて、あなたはそれらのハンドルのすべてを(filename, mode)ペアのリストを取り、オープンファイルハンドルのリストを返した(してから閉じ、独自のコンテキストマネージャを定義することができるときcontextmanager終了)。

独自のコンテキストマネージャを定義する方法の詳細については、http://docs.python.org/reference/datamodel.html#context-managersおよびhttp://docs.python.org/library/contextlib.htmlを参照してください。

+0

これは請求書に完全に当てはまります。 – user1174648

+0

あなたの明確な説明とコンテキストマネージャ文書の再読み込みの後、これは私にとって非常に明白です。だから、初心者に優しいことに感謝します! – user1174648

+0

この回答があなたのニーズを満たしていれば、その横にあるチェックマークのアウトラインをクリックして、それを合格とマークしてください。ありがとう! – Amber

0

3.3では、このような状況でcontextlib.ExitStackが利用可能になりました。 contextlibのドキュメントのコード例をいくつか紹介します。

2.7ユーザーは不運です。アップグレードするもう一つの理由。

関連する問題