2016-03-04 83 views
0

Python的文件說Python的文件IO操作佔用了哪些資源?

當你和一個文件來完成,調用f.close()將其關閉並釋放被打開的文件佔用的系統資源。調用f.close()後,嘗試使用該文件對象將自動失敗。

Python文件IO如何工作以及爲什麼它意味着關閉文件? Python的文件IO操作佔用了哪些資源?

+0

內存指針打開。您需要關閉它們以防止內存泄漏。 –

+0

什麼是內存指針? – mango

+0

對內存中的位置的引用 - [指針](https://en.wikipedia.org/wiki/Pointer_(computer_programming)) –

回答

1

一般而言,您的操作系統對可以爲特定進程打開的文件句柄數量有限制。這不是特定於python,而是任何在該系統上運行的編程語言。

例如,在* nix系統上,ulimit -n會告訴您可以打開的文件句柄的數量。

關閉文件句柄可確保您不會遇到錯誤,因爲操作系統拒絕讓您打開另一個文件。 :-)。

0

也許這個比喻會有所幫助。

文件是一本書。

你打開一本書 - 在編程時,這將創建some reference variable in memory指向讀/寫模式的「首頁」或追加模式的「最後一頁」。

而「書」是開放的,你可以「讀」,它和「翻閱網頁」 - 在Python中,這是由open然後readreadlinesseek

完成的「書「保持打開狀態,然後佔用一些空間。 - 在編程時,這是一般的操作系統內存。想想你桌上的這個空間。

當你「關閉本書」時,它佔據的空間就被釋放了。考慮一下,就像把書從書桌上拿下來,放回書架上。

再次關門是不可能的,因爲它已經關閉了。

未關閉「書本」並打開更多「書本」會導致空間不足,因爲您只能在桌子上放置如此多的書籍 - 在編程時,這可能與resource leak相差無幾。

+0

哇,這個比喻真的有幫助,謝謝!我可以在哪裏閱讀更多關於打開文件如何佔用一般os內存的信息?哪部分內存打開文件使用? – mango

+0

好吧,一個文件就像X字節大,所以這是硬盤空間。除此之外,值得了解[堆棧和堆](http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap)內存。 –

+0

@ cricket_007 - 儘管你確定文件確實佔用了內存資源,但通常這些資源是微不足道的。在內存佔用會以任何可以衡量的方式影響你之前,你將會用盡可用的文件句柄。 – mgilson