BİLGİ SAYAMIYORUM beta

Python da nasıl dosya okunur, dosyaya nasıl yazılır, içinde kelime araması nasıl yapılır, kaç kere yer aldığı nasıl bulunur?

0

Regex nedir, arama nasıl yapılır konularına daha sonra detaylı olarak girmek istiyorum ama bugün daha basit ve direkt bir konuya değineceğim. Zira geniş manada sistem ya da dosya içi aramanın programlama açısından nasıl yapılacağını konuşmak için önce kelimeleri, sayıları ve işaretleri nasıl ayrıştırıp arama kriteri haline getirdiğimizi (Regex) anlatmaya çalışmam gerekecek. Bu sebeple bu yazıda sadece tek bir kelimeyi bir dosya içinde nasıl ararız ona değineceğim. Ama ilk önce o yazı dosyası nasıl oluşturulur ve içeriği nasıl değiştirilir onu göstereceğim. Bunlar yine güncel teknoloji olduğu için python3 ile test edilmiştir. 

Önce dosya yolunu ve yazdırmak için kullanacağımız komutu belirliyoruz, bu okumak için olandan farklı oluyor. Ben şimdi burada görüldüğü gibi "w" parametresini kullandım, bu eğer o isimde bir dosya yoksa oluşturulmasını sağlıyor. Ancak eğer var ise üstüne ekliyor, eğer öyle yapmasını istemiyorsanız "a" kullanabilirsiniz.

      path = "file.txt"
      writeFile = open(path,"w")

"names" diye bir yazı oluşturdum ve onu text dosyasının içine yazdırıyorum.

      names = "kemal cengiz osman cengiz ali osman osman cengiz osman mehmet ziya"
      writeFile.write(names)

Şu an ihtiyacımız yok ama dosyayı okumak ve sonucu ekrana yazdırmak için aşağıdakileri kullanıyoruz. dosyayı satır satır okumak için "readFile.read()" yazan yeri "readFile.readline()" ya da "readFile.readlines()" ı kullanabilirsiniz.

      readFile = open(path, "r")
      result = readFile.read()
      print(result)

Yine burada kullanmıyoruz zira aşağıdaki denemede dosyaların açık olması gerekiyor ama normalde muhtemelen bu şekilde bir yapı kullanmayacağımız için açtığımız bağlantıları aşağıdaki işlemle kapatıyoruz. # leri buradaki koda dahil olmadıkları için koydum normalde başlarında olmayacak tabii ki.

      # writeFile.close()
      # readFile.close()

Dosya içerisinde sadece arama yapmak için eğer dosya çok büyük değilse bunu kullanabilirsiniz. Bu dosya içinde "osman" ı gördüğü anda "true" döndürecektir. 

      if 'osman' in open('file.txt').read():
            print("true")

Daha büyük öğeler için mmap kütüphanesini kullanabilirsiniz:

      import mmap

      with open('file.txt', 'rb', 0) as file, \
            mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
            if s.find(b'osman') != -1:
                  print('true')

Ama arama yapmak değil verdiğimiz "f" dosyasının içinde kaç tane "name" yazısının geçtiğini bulmak istiyorsanız; o da burada. Her bulduğu eşlenik ile sayacın sayısını bir arttırıyor ve sonunda da onu yazdırıyor.

      def howMany (f, name):
            counter = 0
            for i in f:
                 if(i.split(" ")[1][:-1] == name):
                 counter += -1
            return counter

Bu da en baştaki dosya içerisinde "osman" kelimesinin kaç kere geçtiğini bulup onu yazdıran çalıştırma satırı:

     print (howMany(readFile,"osman"))

BENZER 7

Kimse etkileşime girmemiş

ETİKETLER