Python - Dosya İşlemleri

Python'da dosya işlemleri nasıl yapılır?

Herkese merhaba, bu yazımızda Python'da txt üzerinden dosya işlemleri nasıl yapılmaktadır sorusunu irdeleyeceğiz. Keyifli okumalar.

Txt dosyasına nasıl erişilir?

Python'da herhangi bir dosyaya erişebilmemiz için open adında bir fonksiyon bulunmaktadır. Bu fonksiyon parametre olarak dosya adını ve dosya modunu almaktadır. Dosya modu; dosya üzerinde yapacağımız işlemleri temsil eder ve bu işlemleri ifade eden farklı karakterler bulunmaktadır. Aşağıdaki bilgilerden bu karakterlerin işlevlerine göz atabilirsiniz.

  • 'r' modu: Dosyayı sadece okumak için açar. Bu mod varsayılan moddur.
  • 'r+' modu: Dosyayı hem okumak hem de yazmak için açar. Eğer çağrılan dosya bulunamadıysa yeni bir dosya oluşturulmaz.
  • 'w' modu: Dosyayı sadece yazmak için açar. Varolan dosyanın üzerine yazma işlemini yapar. Eğer çağrılan dosya bulunamadıysa yeni bir dosya oluşturur.
  • 'w+' modu: Dosyayı hem okumak hem de yazmak için açar. Varolan dosyanın üzerine yazma işlemini yapar. Eğer çağrılan dosya bulunamadıysa yeni bir dosya oluşturur.
  • 'a' modu: Dosyayı ekleme işlemi için açar. Eğer çağrılan dosya bulunursa, en sonundan eklemeye devam eder. Eğer dosya yoksa sadece yazma işlemi yapacak yeni bir dosya oluşturur.
  • 'a+' modu: Dosyayı hem ekleme hem de okuma işlemi için açar. Eğer çağrılan dosya bulunursa, en sonundan eklemeye devam eder. Eğer dosya yoksa yazma ve okuma işlemleri yapacak yeni bir dosya oluşturur.

Örneğin;

dosya = open('metin_dosyasi.txt', 'w')  # w modunda dosyamızı açtık.
# Python derleyicisi direkt dosya ismi verdiğimizden dolayı
# .py dosyamız ile aynı klasörde bu metin dosyasını arayacaktır.
# Eğer böyle bir dosya yok ise, sıfırdan aynı isimle yeni bir dosya oluşturacaktır.

Yazdırma işlemi

 

satir1 = "bu benim ilk satırım"  # yazdirilacak metin
dosya.write(satir1)  # yazdirma islemi

Eğer dosyanızı açtıktan sonra kapatmaz iseniz, dosya kapatılana kadar her yaptığınız yazdırma işlemi, metin dosyasının en sonuna eklenecektir. Metin dosyası ile işinizi bitirdikten sonra dosyanızı kapatmanız gerekmektedir. Aksi taktirde işletim sisteminiz; Python derleyicisinin o dosya üzerinde işlem yaptığını varsayarak, dışardan erişime dosyanızı kapayacaktır. Dosyanızı açmayı denediğinizde yüklenemeyen bir txt ekranı karşınıza gelecektir. Her şey güzel, dosya kapatma işlemi nerede ve nasıl yapılır?

Dosya kapatma işlemini, o metin dosyası ile bütün işlemlerinizi bitirdiğiniz yerde yapabilirsiniz. Örneğin;

dosya = open('metin_dosyasi.txt', 'w')   # dosya erişimi
satir1 = 'Deneme satırı'
dosya.write(satir1)  # yazdırma işlemi
dosya.close()  # close fonksiyonu ise dosyanızı kapatmaya yarayan fonksiyondur.

Txt dosyasından veri nasıl okunur?

Txt dosyasından veri okuyabilmemiz için birçok farklı yol bulunmaktadır. Bu yolların hepsini aynı zamanda yazdırma işlemlerinde de kullanabilirsiniz. Gelin şimdi detaylı bir şekilde erişim yollarına göz atalım.

I. Yol

İlk olarak klasik bir şekilde dosyaya erişerek, verileri okuma işlemini yapalım.

dosya = open('metin_dosyasi.txt', 'r')  # dosyamızı r modunda açtık
for satir in dosya:  # dosyamızdaki satırları sırasıyla çektik
	print satir  # yazdirma işlemi
dosya.close()  # dosyayı kapatma işlemi

II. Yol

İkinci yol olarak ise; direkt for döngüsü üzerinden dosyaya ulaşacağız. Burada anlık olarak dosyaya ulaştığımız için, close fonksiyonunu kullanmamıza gerek kalmayacaktır.

for satir in open('metin_dosyasi.txt', 'r'):  # dosyamızdan verileri çektik
	print satir  # yazdirma işlemi

Burada in'den sonraki kısımda bulunan open('metin_dosyasi.txt', 'r')'nın aslında bizlere string bir list döndürdüğünü düşünebiliriz. Bu liste, metin dosyamızdaki bütün satırları ayrı bir eleman olarak barındırmaktadır.

III. Yol

Son olarak ise ilk defa göreceğimiz with anahtar sözcüğünün dosya açma işleminde nasıl kullanıldığı olacaktır. with anahtar sözcüğünü kullandığımız taktirde, close komutunu kullanmamız bir şart olmaktan kalkacaktır. Yani; hizalamaya dikkat ettiğimiz sürece with in altında yapılacak bütün işlemler bittikten sonra dosyamız kendisini otomatik olarak kapayacaktır. 

With kullanımı

with open('metin_dosyasi.txt', 'r') as dosya:  # dosyamıza eriştik
	for satir in dosya:  # her bir satırı tek tek döndürüyoruz
		print satir  # yazdırma işlemi

print 'test'  # with ile aynı hizaya geçtiğimiz için artık dosyamız kapandı

Format Operatörleri

Metin dosyalarının barındırdığı değerler string olduğundan dolayı yazma işlemlerinde kullandığımız write fonksiyonunun daima string bir değer alması gerekmektedir. Integer(sayısal) bir değeri write fonksiyonumuza parametre olarak verdiğimizde hata ile karşılaşacağımızdan, integer to string için kullandığımız str burada devreye girmektedir. Örnek ile inceleyelim.

sayi = 66  # Integer(sayısal) değerimiz
dosya.write(str(sayi))  # str ile sayı olan 66 yı '66' haline çevirdik

Her bir değer için tek tek str kısaltmasını kullanmak yerine, direkt %'ler ile betimlenmiş olan operatörleri string içerisinde kullanabiliriz. O operatörlerden bazıları;

  1. %d : integer(sayısal) bir veriyi biçimlendirir
  2. %g : float(küsuratlı sayı) bir veriyi biçimlendirir.
  3. %s : string(metinsel) bir veriyi biçimlendirir.

Örneğin;

print "%d'de %g milyon insan %s öğrenmeye başladı!" % (2015, 3.5, 'python')

# Çıktı
# 2015'de 3.5 milyon insan python öğrenmeye başladı!

os Modülü

os(Operating system) modülü bizlere dosyalar ve dosyaların uzantıları ile çalışırken işimizi kolaylaştıracak fonksiyonları sağlamaktadır. Örneğin; yazdığımız kodun hangi dosya yolunda tutulduğunu öğrenmek istersek;

import os  # os modülünü tanımladık
dosya_yolu = os.getcwd()  # bulunduğumuz dosya yolu
print dosya_yolu  # yazdırma işlemi

os modülünün birkaç fonksiyonuna göz atalım.

  1. os.path.abspath : Eğer bir dosyanın en genel biçimde dosya yolunu edinmek istiyorsanız os.path.abspath fonksiyonunu kullanabilirsiniz.
  2. os.path.exists: Eğer bir dosyanın belirttiğiniz dosya yolunda var olup olmadığını kontrol etmek istiyorsanız os.path.exists fonksiyonunu kullanabilirsiniz.
  3. os.path.isdir : Elde ettiğiniz metinsel verinin bir dosya yolu(Ör: C:/Metinler) olup olmadığını kontrol etmek isterseniz os.path.isdir fonksiyonunu kullanabilirsiniz.
  4. os.path.isfile : Elde ettiğiniz verinin bir dosya(Ör: C:/Metinler/deneme.txt) olup olmadığını kontrol etmek isterseniz os.path.isfile fonksiyonunu kullanabilirsiniz.
  5. os.listdir : Eğer belirli bir dosya yolundaki dosyaların isimlerini almak istiyorsanız os.listdir fonksiyonunu kullanabilirsiniz.

ÖRNEK

Kendi bilgisayarımda oluşturmuş olduğum Metinler adlı dosya aşağıdaki verileri içermektedir.

Dosya yolu: C:/Metinler

Eğer bu resime bakarak az önceki yazmış olduğumuz os.listdir fonksiyonunu kullanmak istersek çıktımız aşağıdaki gibi olacaktır.

import os
print os.listdir('C:/Metinler')

# Çıktı
# ['deneme1.txt', 'deneme2.txt', 'Dosya'] şeklinde olacaktır.

Python'da dosya işlemlerine .txt uzantılı dosyalar üzerinden değindik. Sorularınızı ve görüşlerinizi yorum kısmına yazabilirsiniz. Bir sonraki yazımızda görüşmek üzere :)

Add comment