Yanıtlar:
Her zaman kullanmalısın open()
.
Gibi belgeler devletler:
Bir dosyayı açarken, bu kurucuyu doğrudan çağırmak yerine open () kullanmak tercih edilir. dosyası tür testine daha uygundur (örneğin, "isinstance (f, file)" yazmak).
Ayrıca, Python 3.0'dan beri file()
kaldırıldı .
İki neden: "Bunu yapmanın bir yolu olmalı" python felsefesi ortadan kalkıyor file
.
file
gerçek türdür (örn. kullanarak file('myfile.txt')
yapıcısını çağırır). open
bir dosya nesnesini döndürecek bir fabrika işlevidir.
Python 3.0'da file
, yerleşik olmaktan io
kütüphanedeki birden çok sınıf tarafından uygulanmaya (arabellekli okuyucularla Java'ya biraz benzer, vb.) Geçecek.
file()
int veya liste gibi bir türdür. open()
dosyaları açma işlevidir ve bir file
nesne döndürür .
Bu ne zaman open kullanmanız gerektiğine bir örnektir:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Bu, ne zaman dosya kullanmanız gerektiğine bir örnektir:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Gördüğünüz gibi, her ikisinin de var olması için iyi bir neden ve her ikisi için de net bir kullanım örneği var.
with
ifadeyle açılmalıdır . with open(filename, 'r') as f: \ for line in f: \ process(line)
. Bu açık kapanışı önler. Python 2.6 ve üstü bu with
ifadeyi doğal olarak desteklemektedir . Python 2.5'te, from __future__ import with_statement
kodunuzun en üstüne eklemeniz gerekir .
file
sınıf bir dosya bir with
deyim yoluyla açıldığında otomatik olarak çağrılan özel yöntemlerle donatılmıştır . Bu özel yöntemler dosyanın düzgün ve güvenli bir şekilde açılmasını ve kapatılmasını sağlar.
İşlevsel olarak, ikisi aynıdır; Yine open
de arayacak file
, şu anda fark bir stil meselesi. Python dokümanlar kullanılmasını tavsiye open
.
Bir dosyayı açarken, dosya yapıcısını doğrudan çağırmak yerine open () kullanmak tercih edilir.
Bunun nedeni, gelecekteki sürümlerde aynı olmalarının garanti edilmemesidir ( open
açtığı yola bağlı olarak farklı türdeki nesneleri döndüren bir fabrika işlevi haline gelecektir).
Dosya açmak için sadece open () kullanın. file () aslında 3.0'da kaldırılıyor ve şu anda kullanımdan kaldırılıyor. Bir tür garip ilişki yaşadılar, ancak file () şimdi gidiyor, bu yüzden artık endişelenmenize gerek yok.
Aşağıdakiler Python 2.6 belgelerinden alınmıştır. [köşeli parantez] tarafımdan eklendi.
Bir dosyayı açarken, bu [file ()] yapıcısını doğrudan çağırmak yerine open () kullanmak tercih edilir. dosya tip testine daha uygundur (örneğin, isinstance (f, file) yazmak
Bay Van Rossum'a göre, open () şu anda file () için bir diğer ad olsa da, open () kullanmalısınız çünkü bu gelecekte değişebilir.