File IO hakkında konuşalım.
Ne anlama geliyor?
Bunu programlamada çok sık görürsünüz.
IO, giriş çıkış anlamına gelir.
Gördüğünüz gibi, çoğu zaman makineler tek bir ortamda iletişim kurmuyor.
Örneğin, şimdiye kadar kodumuzu, diyelim ki, burada sahip olduğum Sublime text gibi bir editörde veya Pi
Charm'da veya çevrimiçi bir ripple'da yazıyorduk.
Ancak genellikle sistemin farklı bölümleriyle etkileşim kurmak istersiniz.
Belki başka bir web sitesiyle konuşmak istiyorsunuz, belki masaüstünüzdeki bir şeyle konuşmak istiyorsunuz,
belki bir dosya, belki iki farklı makine birbiriyle iletişim kuruyor.
Belki de bir veritabanıyla konuşuyorsunuzdur.
IO basitçe şu anlama gelir: Hey, dış dünyadan bir şey girmeni ve dış dünyaya bir şey çıkarmanı istiyorum.
Ve IO gibi şeyleri kullanmanın en yaygın yollarından biri dosya okumaktır.
Python hakkında düşünebilirsiniz ve belki de IO'ya ihtiyacımız varken görüntüleri sıkıştıran bir komut dosyası
yazabilirsek nasıl güzel olmaz mı, sonra bir görüntü girmem gerekiyor ve sonra sıkıştırılmış çıktıyı almam gerekiyor.
Resim.
Belki bir PDF dosyası ile çalışmak ve belki de tüm pdf sayfalarıma bir filigran eklemek istiyorum.
O zaman bir PDF giriyoruz ve bir PDF'nin yeni bir sürümünü çıkarıyoruz.
Dolayısıyla bu, çok sık karşılaştığımız bir görevdir.
Ve dosyaları okumak ve yazmak alet kemerimizdeki çok önemli bir araçtır.
Bu arada, bunu PDF'lerle kullanacağımız bir projemiz var.
Ama şimdilik bu dosya girdi çıktısını Python ile nasıl yapabiliriz?
Python'da iki dosyayı açmamızı ve yazmamızı sağlayan yerleşik bir işlev vardır.
Ve buna basitçe açık, güzel ve kolay deniyor.
Yani open kullanarak şöyle bir şey yapabiliriz.
Masaüstümüzde örnek bir metin dosyası oluşturabilirim, bu yüzden burada terminalimi kullanacağım.
Yani mevcut çalışma dizinine bakarsak.
Masaüstündeyim.
Eğer Windows kullanıyorsanız, burada bazı farklı komutlar uygulamanız gerekebilir.
Ancak şimdiye kadar, isterseniz bir dosya oluşturabileceğinizi oldukça iyi biliyor olmalısınız.
Şimdi bunu manuel olarak veya terminalimde yapabilirim.
Aslında yapabilirim.
Mac kullanıyorsanız, sadece dokunun ve sonra test nokta metni diyeceğim.
Burada ls yaparsam bir test metin dosyası ve bir script dot py dosyası olduğunu görürsünüz.
Ve yine, masaüstüme gidip gitmediğimi iki kez kontrol etmek için.
Evet.
Bu ikisi burada.
Mükemmel.
Şimdi burada, script dosyamızda basitçe şunu söyleyebiliriz.
Açık.
Ve dosyanın adı.
Bizim durumumuzda, bu bir test.
Dize testi olduğundan emin olun, nokta metin.
Aynen böyle.
Şimdi bunu bir değişkene atayabilir ve dosyam olarak adlandırabilirim.
Ve şimdi elimizde dosya nesnesi var.
Şunu bir kontrol edelim.
Eğer burada yaparsam, dosyamı yazdırın.
Bakalım neler olacak.
Kodumu çalıştıracağım.
Diyelim ki python üç ve sonra script dot py'yi çalıştırın.
Tamam.
Bir nesne, bir tekstil sarmalayıcı alıyorum, metin olan adı alıyorum, henüz ne olduğundan emin olmadığım modu alıyorum.
Daha sonra bu dosyanın nasıl kodlandığını, yani UTF sekiz kodlamasını öğreneceğiz.
Dosyaların çoğu genellikle UTF sekiz olarak kodlanır.
Pekala, bu dosyayı gerçekten nasıl okuyabilirim?
Tek yapmamız gereken dosyamda bir nokta olması.
Reed metodunu kullanıyorum, böylece bunu şimdi çalıştırırsam.
Bu test metin dosyasında hiçbir şey olmadığı için boş bir alan parçası alıyorum.
O zaman bir şeyler yazalım.
Bu dosyayı ve Sublime Text'i açıp sadece yazacağım.
Merhaba, benim adım Andre.
Şimdi, bu sefer gerçekten çok yaratıcı oldum.
İyi işti.
Pekala, geri dönelim.
Şimdi bu dosyayı okursam.
Şuna bir bak.
Okuyabiliyorum.
Merhaba, benim adım Andre.
İşte oldu.
Dosyamı okudum.
Güzel ve kolay.
Şimdi, eğer bunu tekrar çalıştırırsam, sadece.
Bunu birkaç kez okuyun.
Çalıştır'a tıklarsam.
Hmm.
İlk seferinde okuyabiliyordum ama bu iki seferde hiçbir şey okuyamıyorum.
Nedenmiş o?
Bu açık fonksiyonda bir imleç fikri var.
Yani, dosyayı yalnızca bir kez okuyabilirsiniz.
Ve bir kez açtığınızda, bir dosya nesnesi döndürür.
Ve dosyanın içeriğini okuyabilirsiniz.
Ve dosyanın içeriği burada gördüğünüz gibi tek tek kırmızı bir imleçle ekrana yazdırılır.
Ancak bu ilk okumanın sonunda, imleç dosyanın sonunda olacak.
Yani şimdi okumaya çalıştığında, dosyanın sonuna gelecek ve orada hiçbir şey kalmayacak.
Bunu aşmanın yolu şöyle bir şey yapmaktır.
Basitçe dosyam nokta C deriz, bu da imlecimizi istediğimiz dizine taşır.
Bizim durumumuzda, sıfırı arayın.
Eğer bunu şimdi çalıştırırsam, işte böyle.
Ve eğer imleci geri götürürsem.
Ve bunu kaydedip çalıştırıyorum.
Tamam.
Şimdi çok daha iyi.
Ve bu sadece Python'un bir dosyayı okumak için bu imleç fikrini kullandığını göstermek içindir.
Şimdi yapabileceğim bir başka benzersiz şey de satır okumak.
Yani bunu çalıştırırsam.
Satırı okur, ancak diyelim ki metin dosyamızda farklı satırlar var.
Sen nasılsın?
Burada bir gülen yüz diyelim.
Şimdi satırı okursam.
Tekrar.
Merhaba.
Benim adım Andre.
Eğer satırı tekrar okursam.
Merhaba.
Adım Andre çünkü her satırı anlıyorum.
Bunu birden fazla kez yazdırırsam yalnızca ilk satırı alıyorum.
Ve bunu çalıştırıyorum.
Tamam, bu daha iyi.
Anladım.
Merhaba, benim adım Andre Smiley Face.
Nasılsın?
Yine imleç hareket etmeye devam ediyor.
Tamam, o zaman satırları okumaya devam edebilirim.
Yapabileceğim bir başka şey de bunu çalıştırırsam satırları oku demek.
Tüm dosyayı içeren, tüm satırları okuyan bir liste alıyorum ve burada sahip olduğumu görüyorsunuz.
Merhaba, benim adım Andre Nagy.
Burada yeni bir hat var.
Bir gülen yüz, yeni bir çizgi.
Unutmayın, bu kaçış sıralamasıdır.
Peki sen nasılsın ve burada yeni bir hat yok mu?
Çünkü yeni bir hat yok.
Dosyanın sonu.
Yani bunlar son derece faydalı.
Belki bir dosyadaki bir metin parçasını aramak için düzenli ifadeler kullanabiliriz.
Bu oldukça faydalı, değil mi?
Şimdi yapmamız gereken en son şey ve bu biraz can sıkıcı, bu yüzden size gelecekte bunu nasıl yapmamız gerekmediğini
göstereceğim.
Ancak dosyayı open ile açtıktan sonra aslında manuel olarak kapatmanız gerekir.
Böylece programın başka bir yerinde kullanabilirsiniz.
Bu sadece iyi bir standart.
Yani yapmanız gereken şey, işiniz bittikten sonra dosyamı kapat demek.
Bilgisayarına söyle.
Hey.
Her ne yapıyorsan bırakmalısın.
Artık dosyayla ilgilenmiyorum.
Onunla işimiz bitti.
Başka bir yerde kullanabilirsiniz.
Genelde böyle bir şey yaparız ve işimiz biter.
Biraz ara verelim ve bir sonraki videoda biraz daha öğrenelim.