9 Aralık 2013 Pazartesi

Dosyalama İşlemleri

Python kullanarak geliştireceğiniz uygulamalarda, uygulamanıza ait verileri saklamak isteyebilirsiniz. Eğer çok büyük çaplı verileri saklamayı düşünmüyorsanız dosyalama sizin için ideal bir yöntemdir. Bu yöntem bilinen en ilkel saklama yöntemi olmasına rağmen verilerinizi her zaman veritabanı gibi karmaşık yapılarda saklamaya ihtiyaç duymayabilirsiniz. Şimdi gelin Python ile temel dosyalama işlemleri nasıl yapılır inceleyelim:

Dosyalama Modları:
Dosyalar üzerinde işlem yapmaya başlamadan önce dosyalara erişimi denetleyen okuma/yazma modları hakkında bilgi sahibi olmanız gerekir. Bu modlar;
  • r : sadece okuma modu (salt okunur)
  • w : yazma modu
  • : dosya sonuna ekleme modu
  • b : ikili (binary) erişim modu
  • t : salt metin modu (ön tanımlı)
  • + : hem okuma hem de yazma modu
Yukarıda bahsedilen modlar birçok programlama dili için aynı şeyi ifade etmektedir. Genel olarak farklılık görebileceğiniz nokta ise okuma, yazma ve ekleme dışındaki modlardır.Yani ekstra modlar dillere göre çeşitlilik gösterebilir.

Dosyalama modlarını inceledikten sonra Python ile bir dosyaya nasıl erişebiliriz sorusunu irdeleyelim:

    D = open('ornek.txt')

Bu komutu çalıştırıldığında içerisine parametre olarak belirtilen dosyayı salt-okunur olarak açıp D isimli nesneye atar. (Dosyanın salt-okunur modda açılma sebebi, yazdığımız open metodu içerisine hangi modda açılacağını belirtmememizdir.)


Üst kısımda yer alan komutları incelediğinizde, D.readline() dikkatinizi satırı çekmiştir. readline() metodu o an açık olan dosyadan satır satır veri okumanızı sağlar. Bu komutu ikinci bir kez daha girerseniz dosyada yer alan bir sonraki satır ekrana getirilir.

Diyelim ki dosyayı belirli bir yerine kadar okudunuz ver işinize yarayan bilgiyi elde ettiniz. Peki dosyanın en başına nasıl geri döneceksiniz?

Eğer bu soruya yanıt olarak "dosyayı yeniden açarım" diyorsanız, evet bu da bir yoldur ama bu kadar esnek bir programlama dilinde bunu yapmanın daha kolay bir yolu vardır değil mi?

Kesinlikle var, bu yol "seek" metodunun ta kendisi. Dosyanın başına dönmek için;

    D.seek(0)

Bu komutu çalıştırdığınızda Python o an en son karakteri işaret eden dosya imlecini dosyanızın başına yani 0. karaktere götürür.

Dosyadaki Bütün Satırlara Erişim:
Yukarıdaki yöntem ile sırayla dosyadaki bütün satırlara nasıl erişebileceğimizi görmüş olduk. Şimdi ise küçük birkaç satır yardımıyla bir dosya başından sonuna nasıl okunur inceleyelim:

    
    dosya_metni = open('ornek.txt').read()
    print(dosya_metni)


Gördüğünüz gibi "ornek.txt" dosyası içerisindeki bütün veriyi read() metodu yardımıyla okuyup ekrana bastırdık. Şimdi ise bir dosyadaki satırları listeye aktarmayı inceleyelim:

    liste = D.readlines()

Şimdiye kadar gördüğümüz kısım bir dosyadan veri okuma ile ilgiliydi. Şimdi ise "bir dosyaya nasıl veri yazılır?" sorusunu irdeleyelim. Dosyaya veri yazmak için w veya a ve + modlarının kullanabileceğimiz üç mod olduğuna yazının başında değinmiştik. Şimdi bu modlardan faydalanarak dosyaya veri yazma işlemini gerçekleyelim:

    Y = open('ornek.txt','a')
    Y.write('EKLENEN TEST VERISI')

Gördüğünüz gibi open metodunu yazarken ikinci bir parametre olan "a" sayesinde dosyayı sonuna ekleme modunda açarak içeriğini güncelledik.

Peki içerisinde veri olan bir dosyayı "a" - append yerine "w" - write modunda açsaydık ne olurdu? Varolan dosya içeriği silinir, son olarak göndermiş olduğunuz veri içeriği boşaltılmış dosyaya yazılırdı. "w" - write modu aslında dosyayı yeniden oluşturma modu olarak da düşünülebilir. Zaten open() metodunda belirttiğiniz gibi bir dosya o an içinde bulunulan dizinde yoksa "w" modu ile açılması halinde otomatik olarak oluşturulur.

Üzerinde çalışmakta olduğunuz dosya ile işiniz bittikten sonra;

    Y.close()

komutu ile bu dosyayı kapatmanız faydalı olacaktır.
Temel olarak Python'da dosyalama işlemleri konusunu incelemiş olduk. Siz de yapacağınız uygulamalarla örnekleri çoğaltabilir, bu işlemleri ihtiyacınıza göre şekillendirebilirsiniz.

Unutmayın, Python yeterince esnek bir dildir.
İyi çalışmalar...

5 yorum :

  1. merhabalar ben python ile kendi dosya uzantımızı nasıl yaparız onu öğrenmek istiyorum

    YanıtlaSil
  2. Bu yorum bir blog yöneticisi tarafından silindi.

    YanıtlaSil
  3. Merhaba, kendi uzantınızdan kasıt tam olarak nedir? Sadece kaydetmek için soruyorsanız dosya adını belirtirken kendi uzantınızı yazmanız yeterli olacaktır. Yok kaydettiğim dosya yine kendi yazdığım bir GUI uygulamasında açılacak şekilde dosya uzantısı tanımlamak istiyorum diyorsanız öncelikle bunu işletim sistemi ile ilişkilendirecek bir betiğe ihtiyacınız olacaktır. Daha sonra da dışarından kendisine parametre olarak gönderilen dosyayı işleyecek program betiğine.

    YanıtlaSil
  4. Bilgisayarımızda olmayan bir uzantıya sahip bir dosyayı veya özel bir uzantıya sahip(kolay kolay bulunup, açılamayacak) bir dosyayı bu şekilde açabiliyor muyuz? Yoksa uzantının yüklü olması mı lazım?

    YanıtlaSil
    Yanıtlar
    1. "Bilgisayarımızda olmayan bir uzantıya sahip dosya" ifadesini anlayamadım kusura bakmayın. Bu şekilde text dosyalarını açabilirsiniz. Açtığınız text dosyasının uzantısının bir önemi yok aslında(.txt, .py, .rb). Onun dışında derlenmiş dosyaları bu şekilde açamazsınız.

      Sil