Dosyalar

Dosya, harici bellekte bulunan ve bir adı olan bir veri kümesidir. 

Python'da iki tür dosya vardır:
- bir satırda bölünmüş metin içeren metin; Metin dosyalarındaki özel karakterlerden yalnızca yeni satır karakterleri olabilir ("\n") ve satırın başına dönebilir ("\r") ;); - binary, herhangi bir ikili veriyi kısıtlama olmaksızın depolar (örneğin, resimler, sesler, videolar vb.).

Ardından, metin dosyalarıyla çalışmayı ele alacağız.

 

Programdan bir dosyayla çalışma ilkesi
Üç aşamadan oluşur:
1. dosya açma;
2. dosyayla çalışın;
3. dosyayı kapatma.
Bu çalışma ilkesine "sandviç ilkesi" denir..

Bir dosyayı açarken, çalışma modu belirtilir: okuma, yazma veya dosyanın sonuna veri ekleme. Açılan dosya bloke edilir ve diğer programlar dosyaya erişemez. Dosya üzerinde çalıştıktan sonra, programla olan bağlantısını kesmek için dosyayı kapatmanız gerekir. Bir dosya kapatıldığında, programın bu dosyada yaptığı tüm değişiklikler diske yazılır. Python, dosya değişkenleri aracılığıyla dosyalarla çalışır.

open() işlevi, bir dosyayı açmaya izin verir ve dosyaya erişmek için kullanılabilecek bir dosya değişkeni döndürür.
f = açık(dosya_adı, erişim_modu)
nerede:
- file_name - açılacak dosyanın adı
- access_mode - dosya açma modu. Şunlar olabilir: okuma, yazma vb. Aksi belirtilmedikçe varsayılan mod okumadır (r). 
 
Dosya açma modlarının tam listesi
Mod Açıklama
 
close() yöntemi, bir dosyayı kapatmanıza izin verir.

Örnek
Fin = açık("input.txt") Fout = açık("output.txt")    # dosyalarla bir şeyler yapın fout.close() kapat() Mevcut bir dosya yazılmak üzere açılırsa içeriği yok edilir. Programın sona ermesinden sonra tüm açık dosyalar otomatik olarak kapatılır.
 

r Salt okunur.
w Yalnızca yazılabilir. Belirtilen ada sahip bulunmazsa yeni bir dosya oluşturur.
rb Salt okunur (ikili).
wb Salt yazılır (ikili). Belirtilen ada sahip bulunmazsa yeni bir dosya oluşturur.
r+ Okumak ve yazmak için.
rb+ Okuma ve yazma için (ikili).
w+ Okumak ve yazmak için. Belirtilen ada sahip bulunmazsa yeni bir yazılabilir dosya oluşturur.
wb+ Okuma ve yazma için (ikili). Belirtilen ada sahip bulunmazsa yeni bir yazılabilir dosya oluşturur.
bir Yeni içerik eklemek için açılır. Belirtilen ada sahip bulunmazsa yeni bir yazılabilir dosya oluşturur.
a+ Yeni içerik eklemek için açılır. Belirtilen adla bulunmazsa girişi okumak için yeni bir dosya oluşturur.
ab Yeni içerik (ikili) eklemek için açılır. Belirtilen ada sahip bulunmazsa yeni bir yazılabilir dosya oluşturur.
ab+ Yeni içerik (ikili) eklemek için açılır. Belirtilen adla bulunmazsa girişi okumak için yeni bir dosya oluşturur.

Bir dosyadan veri okuma

Bir metin dosyasını okurken, bayt akışı program girişine arka arkaya sırayla girer, böylece dosya verilere sıralı erişim sağlar. Yani dosyadan 10. değeri okumamız gerekiyorsa önce bir önceki 9'u okumalıyız.

Bir dosyanın tek bir satırını okumak, readline() yönteminin yürütülmesine izin verir. Bu yöntem bir dosya değişkeninde çağrılır. Fin = açık("input.txt") s = Fin.readline()
Klavyeden okurken kullanılanlara benzer (split(), map(), vb.) okuma dizesine çeşitli yöntemler uygulanabilir. Örneğin, bir dosyanın bir satırında boşlukla ayrılmış iki sayı varsa, bunları aşağıdaki gibi sayabilirsiniz: Fin = açık("input.txt") s = Fin.readline().split() # boşluklara bölünmüş çizgi s = ["2007", "2021"] a, b = harita(int, s)         # int() yöntemini listedeki tüm öğelere uygula,   # yani, karakter dizisini bir sayıya dönüştürün # a, b = int(s[0], s[1])   # bu yukarıdaki satırla aynı # a, b = [int(x) for x in s] # üreteç ile aynı
read() yöntemi, dosyanın tüm içeriğini okur ve '\n' karakterlerini içerebilecek bir dize döndürür. read() yöntemine bir tamsayı parametresi iletilirse, belirtilen karakter sayısından fazlası okunmaz. Örneğin, read(1).
yöntemini kullanarak bir dosyayı bayt bayt okuyabilirsiniz.
Bir dosya açıldığında, dosyadaki geçerli konumu belirleyen işaretçi dosyanın başına ayarlanır ve okunduğunda okunan veriden sonraki konuma kaydırılır. Yazarken, işaretçi bir sonraki boş konuma taşınır.

Dosyaya veri yaz

write() yöntemi, bir dosyaya veri yazmak için kullanılır. Sayısal veriler bir diziye dönüştürülmelidir. Bu, format() yöntemiyle veya str() yöntemiyle yapılabilir.
yöntemi
 

Çok Satırlı Dosyalar

Çok satırlı dosyalarla çalışırken, dosyadaki verilerin ne zaman biteceğini bilmeniz gerekir. Bunu yapmak için, readline() yöntemlerinin özelliğini kullanabilirsiniz: dosya imleci dosyanın sonunu gösteriyorsa, readline() yöntemi bir yanlış bir boole değeri olarak algılanan boş dize: iken Doğru:     s = Fin.readline()     s değilse: break   # bir dizi okunurken boş bir dizi alınırsa,   # döngü bir break ifadesiyle biter     print(s, end="")  # yeni satırı devre dışı bırak, çünkü bir dosyadan satır okurken                       # yeni satır karakteri "\n" kaydedildi

 

Çok satırlı dosyalardan veri okumanın diğer yolları
1. Hemen listedeki tüm veriler. Fin = açık("input.txt") list_strings = Fin.readlines()    # tüm satırları aynı anda oku kapat() list_strings içindeki s için:     print(s, end="")
2. with-as yapısını kullanma. Bu durumda dosya döngü bitiminden sonra otomatik olarak kapatılır. Fin olarak open("input.txt") ile:     Fin cinsinden s için:         print(s, end="") Bu yapı, dosyanın kapalı olmasını sağlar. 


3. Python dili tarzında dizeler üzerinde yineleme yapmanın bir yolu (bu yöntemin kullanılması önerilir). Bu durumda dosya da otomatik olarak kapatılır. açıkta olanlar için("input.txt"):     print(s, end="")

Kiril dosyası

Dosya Rusça harfler içeriyorsa (kodu 127'den büyük olan herhangi bir karakter), açarken kodlamayı belirtmeniz gerekir. data = open("input.txt", "r", encoding="utf-8")