2017-01-26 5 views
1

ファイルのすべての行を読み込み、 の文字列のリストとして保存したいとしましょう。 私が使用することができますファイルハンドルに名前があるため、私はそれをどのようにリスト内のファイルハンドルを閉じる

filename = "/path/to/the/file/data.txt" 
fileBuf = [line.strip() for line in open(filename, "r")] 

私の質問を閉じますか? 自動的に閉じますか?

+1

あなたはリストの理解の外にそれを開き、リストの理解の外にそれを閉じなければなりません。 –

+0

別のonelineコンテキスト: 'open(filename、" r ")をf:fileBuf = [fの行のためのline.strip()] –

+0

だから、' open(filename、 "r" ).close() 'これを終了時に強制的に実行しますか? –

答えて

4

おそらくガベージコレクトされていますが、withコンテキストを使用することをお勧めします。あなたも、1行でそれを行うことができます:このことができます

with open(FILENAME, 'r') as f: 
    fileBuf = [line.strip() for line in f] 

希望:

with open(filename, "r") as f: fileBuf = [line.strip() for line in f] 
+0

効果的なコードブロック、コロンのため、それはスコープと問題が解決されるだろうか? –

+1

次の行でファイルが閉じられていることが保証されます。 '' f.close() 'を試してみてください:) –

+0

良いもの。乾杯: –

0

あなたはwith声明に コードを使用することができます!

+0

ユーザーの質問は: "...ファイルハンドルに名前がないので、どのように閉じますか?自動的に閉じますか?" –

+0

@AlexLuisArias:なぜあなたはここで厳しいのか分かりませんが、他の答え(まったく同じです)にはコメントしないでください。 –

+0

私たちは同時に両方を追加しました。私はもう一方のユーザーも同じことを書いていることに気づいていませんでした。理解のために@ウィレム・ヴァン・オンセムに感謝します! :) –

関連する問題