Python okuma tüm dosya
Eğer okuduysanız content = open('Path/to/file', 'r').read()
ile tüm dosya, komut dosyası çıkar kadar açma kolu sol mu? Daha kısa bir yöntem tüm dosya okumak var mı?
CEVAP
bu sorunun cevabı biraz özellikle python uygulamasına bağlıdır.
Bu tüm hakkında ne olduğunu anlamak için, file
gerçek nesne özellikle dikkat edin. Kodunuzda, bu nesne sadece bir kez, bir ifadede belirtilen ve ulaşılmaz derhal read()
çağrı döndükten sonra olur.
Bu dosya, nesne çöp olduğu anlamına gelir. Geriye kalan tek soru "ne Zaman garbage collecter dosya nesnesi toplayacak?".
sayaç bir referans kullanan CPython, çöp bu tür hemen fark edilir ve bu yüzden hemen tahsil edilecektir. Bu genellikle diğer python uygulamaları doğru değildir.
Daha iyi bir çözüm, dosya kapalı olduğundan emin olmak için, bu model
with open('Path/to/file', 'r') as content_file:
content = content_file.read()
her zaman blok bittikten sonra; eğer bir durum oluşursa bile dosyayı hemen kapatmak olacak.
Edit: üzerine: ince bir nokta koymak İçin
Başka file.__exit__()
olan "otomatik olarak" adı verilen bir with
içerik yöneticisi ayarı, sadece başka bir yol olduğunu file.close()
otomatik olarak (yani, başka açıkça arama Kendin)) file.__del__()
. Bu zaman __del__()
aradı mı? sorusuna götürür bizi
Doğru yazılmış bir program olamaz sonlandırıcı şimdiye kadar herhangi bir noktada program sonlanması önce çalışır varsayalım.
-- http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx
Özellikle:
Nesneleri açık bir şekilde yok edilir; ulaşılmaz olduklarında ancak, çöp toplama olabilir.Bir uygulama çöp toplama ertelemek veya tümüyle atlamak için izin verilir— nesneleri hala ulaşılabilir olduğunu toplanır sürece nasıl uygulanır uygulama kalite meselesidir.
[...]
CPython şu anda kullandığı bir referans sayma düzeni (isteğe bağlı) gecikmeli algılama döngüsel bağlı çöp, hangi toplar nesneleri en kısa sürede olurlar ulaşılamaz, ama değil garantili toplamak için çöp içeren döngüsel başvurular.
-- https://docs.python.org/3.5/reference/datamodel.html#objects-values-and-types
(Vurgu benim)
ama anlaşılacağı gibi, diğer uygulamalar diğer davranış olabilir. Örnek olarak, has 6 different garbage collection implementations PyPy!
Python ile ikili dosya okuma ve her ba...
Python Büyük Dosya Okuma için tembel Y...
Python okuma tüm dosya...
Python ile yeni satır ile ayrılmış dos...
Okuma/ayrıştırma Excel (DOC) Python il...