Python'da, dosyalarla alakalı birçok işlem yapabiliyoruz. Normal şartlarda serinin geçmişine baktığınızda dosyalarla alakalı rahatça işlem yapabileceğiniz os modülümüzün olduğunu bilirsiniz. Biz, herhangi bir modül kullanmadan da Python'da dosya işlemleri gerçekleştirebiliyoruz.
Python'da bir dosya açmanız için open() fonksiyonuna ihtiyacınız vardır ama bunu, webbrowser modülündeki open() fonksiyonu ile karıştırmayın. Şimdi, ilk olarak bir dosyanın nasıl oluşturulduğunu görelim.
"x" ParametresiBunun için, open() fonksiyonu içerisine iki adet parametre veriyorum. Bu parametrelerden biri, dosyayı oluşturmak istediğiniz lokasyonu ifade ederken diğeri ise dosya oluşturmak istediğimizi ifade eden özel bir parametre. Örneğimizi görelim.

İlk önce, sol tarata bulunan öğelerin ikonlarına bakın. En üstte 4 adet klasörüm mevcut, aşağıda ise biri fotoğraf olmak üzere kalanı Python dosyası olan bir sürü öğem var. Aralarında herhangi bir .txt dosyası mevcut değil.
Koda baktığımızda open() fonksiyonunu çağırdığımı ve içerisine ilk önce lokasyonu, sonra da "x" şeklinde bir ifade verdiğimi görüyorsunuz. Buradaki "x", execute anlamını taşır ve dosya oluşturmamıza olanak tanır. Bu fonksiyon ve verdiğim parametreler sayesinde Python, C:/Python klasörü altına created.txt isimli bir dosya oluşturacaktır.
Kodu çalıştırıp ne olacağına bakalım.

Kodu çalıştırdığımda gerçekten de created.txt isimli bir dosyanın geldiğini görebiliyoruz. Yani dosya oluşturma işlemimiz gayet başarılı oldu. Peki, eğer bunu tekrar çalıştırmaya kalkarsanız ne olur?

"x" parametresinin görevi dosya oluşturmaktır. Dolayısıyla zaten var olan bir dosyayı oluşturmasını isterseniz bunu yapmayacaktır. Çıktı ekranına bakarsanız "File Exists - Dosya Mevcut" hatasını aldık.
Dosyayı oluşturduk ama ona bir dil kodlaması yapmadık. Normal şartlarda dosyalarda dil kodlaması olur. Bu dil kodlamalarından bazıları Türkçe karakterleri desteklemez. Örneğin "çağrışım" kelimesi içindeki Türkçe harfler, okunmayacak şekilde bozuk gelebilir. İşte, bizim bunu da öngörmemiz ve Türkçe karakterleri de okunabilir kılmak için dil kodlamasını önceden belirlememiz gerekiyor.

Bunu, encoding='utf-8' şeklinde yazıyoruz. Elbette, encoding anahtar kelimesinin sağına istediğiniz dil kodlamasını yazabilirsiniz. Ancak utf-8 dil kodlaması, hem sık kullanılır hem de Türkçe karakterler de dahil olmak üzere birçok karakteri kapsar ve bunları düzgün bir şekilde gösterir. Dolayısıyla dosya oluşturacağınız zaman encoding='' demeyi ihmal etmeyin.
"w" Parametresi"w" parametresi, "write" yani "yazmak" anlamına gelir. Bu parametreyi kullanarak bir dosya oluşturursanız Python, o isimde bir dosya olup olmadığıyla ilgilenmeyecektir. Eğer o isimde bir dosya yoksa yenisini oluşturacaktır. Eğer o isimde bir dosya varsa o dosyayı silip yerine yenisini koyacaktır.
Örneğin created.txt dosyasının içine bir şeyler yazalım.

Gördüğünüz gibi created.txt içerisine bir şeyler yazdım. Şimdi, "w" parametresini kullanalım ve ne olacağına bakalım.

Gördüğünüz gibi programı çalıştırır çalıştırmaz created.txt içerisindeki yazılar silindi. Dolayısıyla "w" parametresini kullanacaksanız çok dikkatli olmak zorundasınız.
"r" Parametresi"r" parametresi, "read-only" yani "yalnızca okumak" anlamına gelir. Bu parametre ile açtığınız dosya sadece okunabilir durumda açılacaktır. Yani içerisine herhangi bir yazma işlemi gerçekleştiremezsiniz.

Ayrıca bu parametre, var olmayan dosyalar için çalışmayacaktır. Eğer var olmayan bir dosya için bunu kullanırsanız hata alırsınız.
"a" ParametresiSık kullanılan bir parametredir. "a" parametresi, dosyaya yazmanıza olanak tanır. Bunun "w" parametresinden farkı ise şöyledir: "'w' parametresini kullanırsanız ve mevcut bir dosya üzerinde işlem yapmak isterseniz mevcut dosya silinecek ve yerine temiz bir dosya gelecektir. Ancak 'a' parametresi ile işlem yaparken dosya mevcut değilse onu oluşturur; dosya mevcut ise dosyayı silmeden onun içerisine eklemeler yapabilirsiniz". Kısacası "w" parametresi yıkıcı etkiye sahip bir parametre iken "a", yapıcı bir parametredir.

Eğer x, w, r veya a gibi herhangi bir parametre girmezseniz Python bunu varsayılan olarak r parametresi ile açacaktır.
Bunlar ilk bakışta oldukça anlamsız geliyor olabilir ama blogun devamında nasıl kullanıldıklarını gördüğünüzde bunları daha net anlayacaksınız.
Biraz öncekiler, dosya açma yöntemleri idi. Şimdi göreceğimiz şey ise gerçekten de dosyanın içine yazı yazmamıza olanak tanıyacak.
Önce, metodumuzu belirleyelim. Yani dosyayı hangi parametre ile açacağımızı belirtelim.

Ben, "a" parametresini kullanacağım. Şimdi, gerçek yazma işleminin nasıl olduğuna bakalım.
write() Fonksiyonu
Dosya oluştururken bunu, createFile isimli bir değişkene atamıştım. Bu yüzden alt satırda o değişkeni kullanabiliyorum. Dosyaya yazmak için createFile.write("") fonksiyonunu kullanıyorum ve tırnak işaretleri arasına, dosyaya yazılmasını istediğim ifadeyi yazıyorum. Programı çalıştırdığım zaman isteğimin yerine geldiğini görüyorum.
Biz bunu yaptık ama aslında dosya arka planda hâlâ açık. Dolayısıyla bizim bu dosyayı kapatmamız gerekiyor.
write() fonksiyonu genelde, tek satırlık yazı yazma işlemleri için kullanılır. Ancak dilerseniz özel kaçış karakteri olan '\n' ifadesini kullanarak alt alta satırlar yazdırabilirsiniz.

close() FonksiyonuDosyayı kapatmak için close() fonksiyonunu kullanıyoruz.

Peki, biz her seferinde close() diyerek dosyayı kapatmak zorunda mıyız? Aslında değiliz. Eğer kullanımlarınız yukarıdaki gibiyse evet, her seferinde close() kullanmalısınız. Ancak sizi bu dertten kurtarabilecek bir bilgim var.
with open() as <dosya_adı>:with open() dediğiniz zaman dosya, verdiğiniz parametre ile açılacak ve işlemleriniz bittiğinde otomatik olarak kapanacaktır. Nasıl kullanıldığına bakalım.

Gördüğünüz üzere with open() dedim ve open() fonksiyonu içerisine blog boyunca gösterdiğim parametreleri girdim. Sonrasında as file: dedim ve Enter'a bastığımda bir girintinin ortaya çıktığını gördüm. İşte, kodları bu girinti içine yazmanız gerekiyor. Peki, en son kısımda duran as file ne demek?
Normalde bir modül import ederken örneğin import webbrowser as web şeklinde import edebiliyorduk ve kod sayfası boyunca bu modülü kullanırken webbrowser. yerine web. şeklinde bir kullanım sağlayabiliyorduk. Bir nevi, modülün adını değiştiriyorduk. Burada da aynı mantık söz konusu. Açtığınız dosyayı bir değişkene atamak yerine as ifadesini kullanıyorsunuz.
Biraz önce createFile = open() derken açtığımız dosyayı createFile değişkenine atıyorduk. Burada ise değişken tanımlamak yerine as file: diyoruz ve sanki file = open() demişiz gibi oluyor. Zaten bir alt satıra bakarsanız file.write() dediğimizi görürsünüz. as ifadesini verdikten sonra açacağınız dosyaya istediğiniz ismi verebilirsiniz. Dediğim gibi, burada değişken tanımlamış oluyorsunuz.
Bu kullanımla beraber artık close() demenize hiç gerek kalmıyor.
writelines() Fonksiyonuwrite() fonksiyonu, çok satırlı ve uzun metinler için çok da elverişli bir fonksiyon değildir. O, daha çok tek satırlık basit cümleler için daha kullanışlıdır. Peki, bir dosyanın için uzun bir metin yazmak istersek bunu da write() fonksiyonu ve '\n' özel kaçış karakteriyle mi yapacağız? Bu, okunabilir kod yapısına aykırıdır. Bu yüzden çok satırlı ve uzun metinler için writelines() fonksiyonunu kullanıyoruz. Bakalım.

with open() yapısı ile created.txt dosyasını açıyorum. Sonrasında file.writelines() diyorum ve parantezler arasına bir liste açıyorum. Yani yapı bu şekilde oluyor: writelines([]). Devam edelim.

Baktığınız zaman bu, ["kelime", "kelime", "kelime"] şeklindeki kullanımdır. Ancak, bu kelimelerin her birini bir cümle olarak düşünün. Satır satır ve okunaklı bir şekilde yazılacaklardır.
read() FonksiyonuBu fonksiyon, oluşturduğunuz ya da hâlihazırda var olan bir dosyanın içeriğini okumanıza olanak tanır. Görelim.

Eğer isterseniz dosyanın içeriğini de kontrol edebilirsiniz. Bunun için yapmanız gereken şey, file.read() yapısını bir değişkene atamak.

Yukarıdaki görselde değişken içerisinde yani aslında dosya içerisinde "Her şey" kalıbını aradık; sonucu inceleyebilirsiniz. Bir de dosyada yazmayan bir şeyi arayalım.

Bu sefer de "Cyber" kelimesini aradık.
readline() FonksiyonuBu fonksiyon, dosyanın yalnızca ilk satırını okur.

İlk bakışta oldukça anlamsız gelebilir ama örnek vermek gerekirse dosyaları ilk satırda yazan özel bir ifadeye göre sınıflandırmak isteyebilirsiniz.
readlines() FonksiyonuBu fonksiyon ise read() fonksiyonu gibi bütün dosyayı okur ama bunu bir liste olarak geri döndürür. Bakalım.

Gördüğünüz gibi bir liste döndü. Burada her satır, listenin bir elemanıdır. Eğer bu bir liste ise listenin elemanlarına erişmemiz gerekir. Deneyelim.

Dosyanın döndürdüğü listenin ikinci elemanına yani "Öyle" kelimesine eriştik ve ekrana yazdırdık.
Yayınlanma Tarihi: 2022-12-11 18:05:52
Son Düzenleme Tarihi: 2022-12-19 17:51:20