Bilgisayar Programlamasna ve Veri Analizine Giri VII Sabanc
Bilgisayar Programlamasına ve Veri Analizine Giriş - VII Sabancı Üniversitesi Lise Yaz Okulu 2017 8. ders
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 21. 10. 2021 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. – Okuma modu, yazma modu, vs. • 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 gibi. 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 3
Dosya Açma • dosyam = open("dosya_ismi. uzantısı", "w") • "w" modu dosyayı bir şey yazmak için açtığımızı belirtir. • Dosyaları açarken program içinde o dosyaya erişmek için bir dosya değişkeni (ing. file handler) kullanırız – Yukarıdaki dosyam bu tip bir dosya değişkeni • Dosya uzantısı için şimdilik ". txt" yazalım. Bu text/metin dosyası yazdığımızı belirtir ama içerik uzantıdan da bağımsızdır (yani uzantıyı. txt yapmak gibi bir kural yok). – Text dosyalarının içeriğini birden fazla satıra yayılan karakter dizisi olarak düşünebiliriz. • Dosya ismini yazarken dikkat – "C: python 27ornek_programlarornek 1. txt" yanlış – "C: \python\ornek_programlar\ornek 1. txt" doğru 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 4
Dosya Açma • Yol (path) belirtmezsek, dosya programın olduğu dizinde açılır – dosya 1 = open("ornek 1. txt", "w") • Başka bir dizinde açmak istiyorsak, o zaman tam path tanımlamamız gerekiyor – dosya 1 = open("D: \Python 27\programs\ornek 1. txt", "w") • Mac OS X’te \ yerine // veya sadece / kullanılır 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 5
Dosyaya Yazma • Burada izleyeceğiniz adımlar şu şekilde yazılabilir: 1. Dosyanızı açın (yazma modunda) – Örnek: dosya 1 = open("ornek 1. txt", "w") 2. write() fonksiyonu ile dosyanıza veri yazabilirsiniz/ekleyebilirsiniz – Örnek: dosya 1. write("Sabanci Universitesi") 3. Dosya ile işiniz bittiğinde dosyayı close() fonksiyonu ile kapatın – 21. 10. 2021 Örnek: dosya 1. close() Sabancı Üniversitesi Lise Yaz Okulu 6
Uyarılar ve Dosya Açma Modlar • Dosyanızla işiniz bittiği zaman mutlaka kapatın – • Yoksa yazdığınız şeyler gidebilir. 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" 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 7
Örnek 1 dosya 1 = open("ornek 1. txt", "w") dosya 1. write("Sabanci Universitesi") dosya 1. close() dosya 1 = open("ornek 1. txt", "a") dosya 1. write("Sabanci Universitesi") dosya 1. close() • Dosyanın içi Sabanci Universitesi 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 8
Örnek 2 dosya 1 = open("ornek 1. txt", "w") dosya 1. write("Sabanci Universitesi") dosya 1. close() dosya 1 = open("ornek 1. txt", "a") dosya 1. write("n. Sabanci Universitesi") dosya 1. close() • Dosyanın içi Sabanci Universitesi 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 9
Örnek 3 dosya 1 = open("ornek 2. txt", "w") dosya 1. write("Sabanci Universitesi") dosya 1. close() dosya 1 = open("ornek 2. txt", "a") dosya 1. write("t. Sabanci Universitesi") dosya 1. close() • Dosyanın içi Sabanci Universitesi 21. 10. 2021 Sabanci Universitesi Sabancı Üniversitesi Lise Yaz Okulu 10
Dosyanın İçeriğini Okumak • Bunun için read() fonksiyonu kullanılır – Dosyanın içi tek bir string değişkeni olarak okunur ve saklanır • Ama yine önce dosyayı açmak gerekir • Örnek: Önceki ornek 1. txt dosyasını açalım dosya 1 = open("ornek 1. txt", "r") dosyanin_ici = dosya 1. read() print dosyanin_ici dosya 1. close() >>> Sabanci Universitesi >>> 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 11
Küçük Ödev • Çalıştığınız klasörde "arkadaslar. txt" adında bir dosya açın. • Dosyanın içerisine her satıra bir arkadaşınızın adı soyadı, doğum tarihi, doğum yeri vb. kimlik bilgilerini yazın • Kişinin kimlik bilgilerinin arasına "tab" karakteri koyun t Melis Yildiz Uygar Dogan Deniz Buldan Selin Temiz • Dosyayı saklayın • Dosyayı açın 20. 10. 2001 18. 08. 2000 02. 08. 2000 13. 03. 2002 Izmir Istanbul Ankara Gaziantep • Bu kimlik bilgilerini okuyun ve ekrana bastırın İPUÇLARI: dosya 1 = open("ornek 1. txt", "w") dosya 1 = open("ornek 1. txt", "r") dosya 1. close() 21. 10. 2021 dosya 1. write("Sabancit. Universitesi") dosyanin_ici = dosya 1. read() Sabancı Üniversitesi Lise Yaz Okulu 12
Küçük Ödevin Devamı • Aynı ödev ama eklemeler ve bazı değişiklikler var • "arkadaslar. txt" dosyasının önceden yaratılmış olduğunu kabul edelim • Kullanıcıya üç seçenekli bir menü sunun: – "0": programdan çıkış – "1": yeni kayıt ekle (ad, soyad, doğum tarihi ve doğum yerin bilgilerini kullanıcıdan isteyin ve dosyaya girin) – "2": olan kayıtları oku (Bos dosya ise "Bos dosya" yazdır) • Kullanıcı programdan çıkmadıkça, menü tekrar verilsin İPUÇLARI: dosya 1 = open("ornek 1. txt", "w") dosya 1 = open("ornek 1. txt", "r") dosya 1 = open("ornek 1. txt", "a") 21. 10. 2021 dosya 1. write("Sabancit. Universitesi") dosyanin_ici = dosya 1. read() dosya 1. close() Sabancı Üniversitesi Lise Yaz Okulu 13
Ya O Dosya Yoksa • Bir dosyayı "w" modunda açarsanı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 • Bir dosyayı "a" modunda açarsanız: – Eğer dosya yoksa boş olarak açılır – Eğer dosya önceden varsa, eski yazılanlar silinmeden açılır ve yeni yazılacak olanlar sonuna eklenir. • Bir dosyayı "r" modunda açmaya kalktığınız olmayan dosyayı açmak hata verir. • Bu hatayı engellemek için dosyayı açmadan önce 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 21. 10. 2021 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 ama dosya yoksa, "Yeni bir dosya acıyorum" desin ve kaydı alsın – Yeni kayıt girmek istiyorsak ve dosya varsa, "Var olan dosyaya ekliyorum" desin ve eklesin. 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 15
Farklı Dosya Okuma Şekilleri • Yeni bir fonksiyon: readline() • Bununla dosyanın bir satırını okuruz – string değişkeni içine • Örnek: kayitlar. txt dosyasının içeriği şu şekilde Didier Drogba 01. 05. 1891 Istanbul Mazhar Alanson 05. 06. 1950 Trabzon Donald Trump 04. 08. 1940 NYC Angela Merkel 01. 02. 1770 Almanya 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 16
readline() Didier Droba Mazhar Alanson Donald Trump Angela Merkel 01. 05. 1891 05. 06. 1950 04. 08. 1940 01. 02. 1770 Istanbul Trabzon NYC Almanya kayit_dosyasi = open("kayitlar. txt", "r") kayit = kayit_dosyasi. readline() print kayit_dosyasi. close() >>> Didier Drogba >>> 21. 10. 2021 01. 05. 1891 Istanbul Sabancı Üniversitesi Lise Yaz Okulu 17
readline() Didier Droba Mazhar Alanson Donald Trump Angela Merkel 01. 05. 1891 05. 06. 1950 04. 08. 1940 01. 02. 1770 Istanbul Trabzon NYC Almanya kayit_dosyasi = open("kayitlar. txt", "r") kayit = kayit_dosyasi. readline() print kayit_dosyasi. close() >>> Didier Drogba 01. 05. 1891 Mazhar Alanson 05. 06. 1950 >>> 21. 10. 2021 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 >>> Didier Drogba 01. 05. 1891 Istanbul Mazhar Alanson 05. 06. 1950 Trabzon Donald Trump 04. 08. 1940 NYC Angela Merkel 01. 02. 1770 Almanya 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 19
readlines() fonksiyonu • Açılan dosyaların satırlarını bir listeye ekler • Listenin her bir elemanı bir string'dir • Örnek: dosya 1 = open("kayitlar. txt", "r") tum_satirlar = dosya 1. readlines() print tum_satirlar >>> ['Didier Drogbat 01. 05. 1891t. Istanbuln', 'Mazhar Alansont 05. 06. 1950t. Trabzonn', 'Donald Trumpt 04. 08. 1940t. NYCn', 'Angela Merkelt 01. 02. 1770t. Almanyan'] >>> 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 20
readlines() fonksiyonu • len fonksiyonu ile kaç tane kayıt olduğunu bulabiliriz. dosya 1 = open("kayitlar. txt", "r") kayitlar = dosya 1. readlines() print len(kayitlar) >>> 4 >>> 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 21
Ödev • Elimizde içeriği şu şekilde olan bir dosya var (her satırda önce bir veya birden fazla kelime şeklinde isim/soyad ve en sonda yaş). Delal Abdullatif Abzak 38 Fatma Ozlem Acar 25 Ozde Acarkan 37 Atahan Adanir 69 … … • Bu dosya içerisinde – – – Kaç kişi olduğunu Yaşlarının toplamını Yaşların ortalamasını En genç kişinin kaç yaşında olduğunu En yaşlı kişinin kaç yaşında olduğunu bulan ve ekrana yazan bir program yazın. • Önce dosyanın adını klavyeden okusun. • Eğer dosya yok ise, dosyanın bulunamadığını yazsın. • Eğer dosya boş ise (dosya var ama içinde hiçbir kayıt yok ise), ortalama yaş, en genç yaş, ve en yaşlı yaş bilgilerini yazmasın ama yaşların toplamını ve kaç kişi olduğunu 0 olarak göstersin. 21. 10. 2021 Sabancı Üniversitesi Lise Yaz Okulu 22
Ödev (örnek çıktılar) • Dosya yoksa Dosyanin adini girin: kisiliksizler. txt isimli dosya bulunamadı • Dosya var ama içi boşsa Dosyanin adini girin: boskisiler. txt Toplam yas = 0 Kisi sayisi = 0 • Dosya var ve içinde bilgi varsa (dosya içeriğinin beklenildiği formatta, yani her bir satırda boşluklar ile ayrılmış şekilde bir kişiye ait isim ve yaş bilgisinin olduğunu varsayabilirsiniz) Dosyanin adini girin: kisiler. txt Toplam yas = 51333 Kisi sayisi = 955 Ortalama yas = 53. 7518324607 En genc kisi 21 yasinda En yasli kisi 87 yasinda 21. 10. 2021 Web sayfasında kisiler. txt ve boskisiler. txt dosyalarını bulabilirsiniz Sabancı Üniversitesi Lise Yaz Okulu 23
- Slides: 23