Bilgisayar Programlamasına ve Veri Analizine Giriş - VII Erkay Savaş Sabancı Üniversitesi Lise Yaz Okulu.

Download Report

Transcript Bilgisayar Programlamasına ve Veri Analizine Giriş - VII Erkay Savaş Sabancı Üniversitesi Lise Yaz Okulu.

Bilgisayar Programlamasına ve
Veri Analizine Giriş - VII
Erkay Savaş
Sabancı Üniversitesi
Lise Yaz Okulu
2015
Modül 7 için Planımız
•
•
•
•
Verileri kalıcı olarak nasıl saklarız?
Sabit diskten nasıl okur ve yazarız?
Dosya kavramı
Dosya açmak ve kapamak
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
2
Dosya (File)
• Verilerimizi sabit diskte dosyalar halinde saklarız.
• Dosyaya erişmek için önce dosyayı açmamız gerekir
• Dosyayı okumak ya da yazmak amacıyla farklı
“mod”larda açarız.
• Kullanılış şekli:
– open(“file_name”, “mode_name”)
– “mode_name” ile dosyayı ne amaçla açtığımız belirtiriz;
örneğin okumak yada yazmak, her ikisi de vb.
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
3
Dosya Açma
• dosya_tutacağı = open(“dosya_ismi.uzantısı”, “w”)
• “w” modu dosyayı bir şey yazmak için açtığımızı
belirtir.
• Dosya uzantısı için şimdilik “.txt” yazalım. Bu
text/metin dosyası yazdığımızı belirtir.
– Text dosyalarının içeriğini karakter dizisi olarak
düşünebiliriz.
• Dosya ismini yazarken dikkat
– C:\python27\ornek_programlar\ornek1.txt  yanlış
– C:\\python\\ornek_programlar\\ornek1.txt
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
4
Dosya Açma
• Yol (path) belirtmezsek, dosya programın olduğu
dizinde açılır
– dosya1 = open("ornek1.txt", "w")
• Başka bir dizinde açmak istiyorsak, o zaman tam path
tanımlamamız gerekiyor
– dosya1 = open("D:\\Python27\\programs\\ornek1.txt", "w")
• Mac OS X’te “\\” yerine “//” kullanılır
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
5
Dosyaya Yazma
• Burada izleyeceğiniz adımlar şu şekilde yazılabilir:
1. Dosyanızı açın
–
Örnek: dosya1 = open("ornek1.txt", "w")
2. write() fonksiyonu ile dosyanıza veri
yazabilirsiniz/ekleyebilirsiniz
–
Örnek: dosya1.write(“Erkay Savas”)
3. Dosya ile işiniz bittiğinde dosyayı close() fonksiyonu
ile
–
07.11.2015
Örnek: dosya1.close()
Sabancı Üniversitesi Lise Yaz Okulu
6
Uyarılar ve Dosya Açma Modlar
•
•
Dosyanızla işiniz bittiği zaman mutlaka kapatın
Dikkat: Eğer dosyanızın içinde veri varsa, "w"
modunda açarsanız içindekiler silinir
• Farklı dosya açma modları:
– Okumak için " r "
– Hem okumak hem de yazmak için "r+"
– Veri eklemek için "a"
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
7
Örnek 1
dosya1 = open("ornek1.txt", "w")
dosya1.write("Erkay Savas")
dosya1.close()
dosya1 = open("ornek1.txt", "a")
dosya1.write("Erkay Savas")
dosya1.close()
• Dosyanın içi
Erkay SavasErkay Savas
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
8
Örnek 2
dosya1 = open("ornek1.txt", "w")
dosya1.write("Erkay Savas")
dosya1.close()
dosya1 = open("ornek1.txt", "a")
dosya1.write(“\nErkay Savas")
dosya1.close()
• Dosyanın içi
Erkay Savas
Erkay Savas
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
9
Örnek 3
dosya1 = open("ornek1.txt", "w")
dosya1.write("Erkay Savas")
dosya1.close()
dosya1 = open("ornek1.txt", "a")
dosya1.write(“\tErkay Savas")
dosya1.close()
• Dosyanın içi
Erkay Savas Erkay Savas
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
10
Dosyanın İçeriğini Okumak
• Bunun için read() fonksiyonu kullanılır
• Ama yine önce dosyayı açmak gerekir
• Örnek. Önceki ornek1.txt dosyasını açalım
dosya1 = open("ornek1.txt", "r")
dosyanin_ici = dosya1.read()
print dosyanin_ici
dosya1.close()
>>>
Erkay Savas
>>>
07.11.2015
Erkay Savas
Sabancı Üniversitesi Lise Yaz Okulu
11
Küçük Ödev
• Bir dosya açın
• Dosyanın içerisine her satıra bir kişinin ismi soyadı,
doğum tarihi, doğum yeri vb. kimlik bilgilerini yazın
• Kişinin kimlik bilgilerinin arasına “tab” koyun
• Dosyayı saklayın
• Dosyayı açın
• Bu kimlik bilgilerini okuyun
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
12
Küçük Ödevin Devamı
•
•
•
•
Aynı ödev
Önceden yaratılmış bir dosya olduğunu kabul edelim
Kimlik bilgilerini kullanıcıdan isteyin
Kullanıcıya üç seçenek verin
– “0”: programdan çıkış
– “1”: yeni kayıt ekle
– “2”: olan kayıtları oku (Bos dosya ise “Bos dosya” yazdır)
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
13
Ya O Dosya Yoksa
• Bir dosyayı “w” modunda acarsanız, dosya var mı yok
mu demeden dosya açılır
– Dosya önceden varsa, yazarken eski yazılanlar silinir
– Dosya yoksa boş olarak açılır
• Diğer modlarda, “r”, “a”, olmayan dosyayı açmak hata
verir
• Bunun için aşağıdaki kontrolü yaparız
– if os.path.exists(dosya_ismi) == True:
– Bunun için önce, programın başına import os dememiz
gerekir
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
14
Bu Artık Küçük Bir Ödev Değil
•
•
•
•
•
•
Aynı ödev
Önceden yaratılmış bir dosya olmasa da çalışsın
Kimlik bilgilerini kullanıcıdan isteyin
Kullanıcıya aynı üç seçeneği verin
Dosya ismini kullanıcı girsin
Dosya açılmadan önce dosyanın olup olmadığı
kontrol edilsin; dosya yoksa
– Okuma yapmak istiyorsak, “Böyle bir dosya yok” desin
– Yeni kayıt girmek istiyorsak, “Yeni bir dosya acıyorum”
desin ve kaydı alsın
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
15
Farklı Dosya Okuma Şekilleri
• Yeni bir fonksiyon: readline()
• Bununla dosyanın bir satırını okuruz
• Örnek: kayitlar.txt dosyasının içeriği
Erkay Savas
Mazhar Alanson
Barrack Obama
Angela Merkle
07.11.2015
01.05.1891
05.06.1950
04.08.1960
01.02.1770
Istanbul
Trabzon
Hawai
Almanya
Sabancı Üniversitesi Lise Yaz Okulu
16
readline()
Erkay Savas
Mazhar Alanson
Barrack Obama
Angela Merkle
01.05.1891
05.06.1950
04.08.1960
01.02.1770
Istanbul
Trabzon
Hawai
Almanya
kayit_dosyasi = open("kayitlar.txt", "r")
kayit = kayit_dosyasi.readline()
print kayit
kayit_dosyasi.close()
>>>
Erkay Savas
>>>
07.11.2015
01.05.1891
Istanbul
Sabancı Üniversitesi Lise Yaz Okulu
17
readline()
Erkay Savas
Mazhar Alanson
Barrack Obama
Angela Merkle
01.05.1891
05.06.1950
04.08.1960
01.02.1770
Istanbul
Trabzon
Hawai
Almanya
kayit_dosyasi = open("kayitlar.txt", "r")
kayit = kayit_dosyasi.readline()
print kayit
kayit = kayit_dosyasi.readline()
print kayit
kayit_dosyasi.close()
>>>
Erkay Savas
01.05.1891
Mazhar Alanson 05.06.1950
>>>
07.11.2015
Istanbul
Trabzon
Sabancı Üniversitesi Lise Yaz Okulu
18
Tüm Satırları Birden Okumak
kayit_dosyasi = open("kayitlar.txt", "r")
for satir in kayit_dosyasi:
print satir
>>>
Erkay Savas
01.05.1891
Istanbul
Mazhar Alanson 05.06.1950
Trabzon
Barrack Obama 04.08.1960
Hawai
Angela Merkle
Almanya
07.11.2015
01.02.1770
Sabancı Üniversitesi Lise Yaz Okulu
19
readlines() fonksiyonu
• Açılan dosyaların satırlarını bir listeye ekler
• Örnek:
dosya1 = open("kayitlar.txt", "r")
print dosya1.readlines()
>>>
['Erkay Savas\t01.05.1891\tIstanbul\n', 'Mazhar
Alanson\t05.06.1950\tTrabzon\n', 'Barrack
Obama\t04.08.1960\tHawai\n', 'Angela
Merkle\t01.02.1770\tAlmanya']
>>>
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
20
readlines() fonksiyonu
dosya1 = open("kayitlar.txt", "r")
kayitlar = dosya1.readlines()
print len(kayitlar)
>>>
4
>>>
07.11.2015
Sabancı Üniversitesi Lise Yaz Okulu
21