Arkasokak Logo





Forum Arkasokak > HAYATIN İÇİNDEN > İnternet Teknoloji Tasarım » Python ve dosya manipulasyonu
Python ve dosya manipulasyonu Dosya okuma ve yazma Dosya işlemlerinde en çok dosyaya yazma, ve dosyadan veri okumaya ihtiyaç duyarız.Python, ...

Cevap
  #1  
Eski 19-07-2006, 11:32 PM
empedoCles kullanıcısının avatarı
Müdavim
 
Giriş: Sep 2005
Mesaj: 123
empedoCles İtibar düzeyini kapadı
Python ve dosya manipulasyonu

Python ve dosya manipulasyonu


Dosya okuma ve yazma

Dosya işlemlerinde en çok dosyaya yazma, ve dosyadan veri okumaya ihtiyaç duyarız.Python, beraberinde getirdiği built-in(standart) fonksiyonlarıyla bu işi oldukça kolay yapabilmenize olanak sağlıyor.

Örnek olarak bir dosya içeriğini okumak isterseniz;



Kod:
dosya = open('a.txt') icerik = dosya.read() dosya.close() print icerik

Betigi çalıştırdığınızda a.txt dosyasının içeriği ekrana basılacaktır.

Herhangi bir dosyanın içine bir şey yazmak isterseniz;


Kod:
dosya = open('a.txt','w') icerik = dosya.write('test') dosya.close()

a.txt içine test stringi yazılmış olacak.Bu örnekte ilkine göre farklı bir parametre kullandık.'w' parametresi write anlamına gelir.Dosyayı yazma modunda açtığınızı belirtir.Eğer okuma modunda açıyorsanız, bu parametreyi boş bırakabilirsiniz veya r(read) parametresiyle kullanabilirsiniz.

Zaman zaman dosya binary modunda açmak gerekebilir.Bu durumlarda parametrenin yanına b eklemelisiniz.Yani dosyayı w modunda açıyorsanız wb, r modunda açıyorsanız rb modunda açacaksınız.

Dosyayı yazma modunda acıp, eger dosya yoksa yaratıp üstüne yazmasını istiyorsanız w+, dosyaya yazdığınız verinin varolan içeriğin altına eklenmesini istiyorsanız a(append) parametresiyle çalıştırabilirsiniz. Örneğin;




Kod:
dosya = open ( 'a.txt', 'a' ) dosya.write ( '\n yeni satir' ) dosya.close()

Bu betik a.txt içeriğine dokunmadan, alt satıra geçip(\n bu işe yarar.) yeni ifadeyi dosyaya yazar.

Meşhur "Every thing is an object" lafını duymuşsunuzdur.'bu_bir_string'.count() diyebileceğiniz bu güzel dilde bir dosyayı açtığınızda ilgili degişken nesne döndürür.

Örneğin bir dosyayı şu şekilde açtınız;


Kod:
dosya = open ( 'a.txt', 'a' ) print dosya.mode print dosya.name dosya.close()
Betik çıktısı a ve a.txt olacaktır.

İmleci istediğiniz yerden başlatın !

Bazen öyle zamanlar olur ki çok büyük dosyalarla uğraşmak zorunda kalırsınız ve daha önemlisi bu büyük dosyadan son x karakteri çekmeniz gerekir. Bu gibi durumlar için dosya içeriğinin hepsini okutmak yerine imlec'in yerini değiştirip daha hızlı ve optimize şekilde istediğiniz bilgiyi çekebilirsiniz.

Örnegin 15 MB lik bir dosyadan son 100 karakteri çekmek istiyorsunuz;



Kod:
dosya= 'a.txt' 
length = os.path.getsize(dosya) 
dosya = open(dosya, 'r') 
dosya.seek(length-200) 
print dosya.read()


Son 200 karakter emrinize amade.

Basit Uygulama : Metin okuyucusu
Öğrendiklerimizde python'un standart GUI kiti tkinter'i kullanarak basit bir metin okuyucusu yapalım.


Kod:
#!/usr/bin/env python 
# yukaridaki satiri windows icin python.exe olarak ayarlayin.
from Tkinter import *
from tkFileDialog import *
# Menü'den ac dugmesine basilince tetiklenecek fonksiyon
def ac():
    dosya=askopenfilename(filetypes=[("Metin Belgesi","*.txt"),
                                         ("Tum Dosyalar","*.*")]
                         )
    if dosya:
        dosya_icerigi = open(dosya)
        # dosya icerigini al, ve textbox icine at
        yazi_kutucugu.insert(END,dosya_icerigi.read())
root = Tk()
root.geometry('500x330+270+50')
root.title(' Basit Metin okuyucusu')
menubar = Menu(root)
menubar.add_command(label="Dosya ac", command=ac)
menubar.add_command(label="Cikis!", command=root.quit)
root.config(menu=menubar)
yazi_kutucugu = Text(root,width=100)
yazi_kutucugu.pack()
root.mainloop()



Ekran görüntüleri:




Konu ile ilgili kaynaklar :

http://www.effbot.org/zone/readline-performance.htm
http://www.python.org/doc/current/tut/node9.html#SECTION009210000000000000000
http://www.python.org/doc/current/lib/bltin-file-objects.html
http://www.devshed.com/c/a/Python/File-Management-in-Python/
imza

#include <middleeast.h>

#define ISRAELIS foul_beasts






empedoCles kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla
  #2  
Eski 07-12-2006, 11:09 PM
By_NOD
Misafir
 
Mesaj: n/a
sağol arkadaşım
Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 07:00 AM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - Gizlilik İlkesi - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0