Python İle Satır Bilgisi Öğrenme

import os
import playsound
import time
konum = "C:\GLOJAR\hafiza.txt"
while True:
    dosya = open(konum,"r+",encoding="utf-8") #belgeyi okuma kipinde açalım.
    print(dosya.readline())
    aranan = input("Kelime tanımla: ")

    aranan_varmi = dosya.read().find(aranan) ###dosya.read() ile okuyalım ve .find(aranan) ile aranan değişkenine girilen kelimeyi arayalım ve buna aranan_varmi değişkeni diyelim.

    if aranan_varmi != -1: # aradığımız kelime yoksa çıktı -1 olur. eğer çıktı -1 değilse ok yaz.
            print("bulundu")
            dosya.close() #dosyayı kapatalım.
    else: # aksi halde
            print("Bulunamadı")
            dosya.close() #dosyayı kapatalım.
    time.sleep(1)

şeklinde bir kodum var.
kodda bir txt dosyası içinde kelime bulmak amaçlanıyor. ama ben bulduğum kelimenin kaçıncı satırda olduğunu da öğrenmek istiyorum. bunu nasıl yaparım? yardımlarınız için teşekkürler.

Özür dilerim,hoşgeldiniz demeyi unuttum.Aramıza hoşgeldiniz :slight_smile:
Kodunuzun başında `** değil ``` koyarsanız doğru görünüme ulaşabilirsiniz.

1 Beğeni

Hoşbuldum :slight_smile:
Kod için yardımcı olabilir misiniz?

Merhaba, hoş geldiniz.

Kodunuzla alakalı öncelikle şunları söyleyeyim.

  1. Dosyayı while döngüsünde sürekli açıp kapatmanız aslında fazladan işlem yapılmasını sağlar. Dolayısıyla dosyayı while döngüsüne girmeden açmanızı tavsiye ederim.

  2. dosya.readlines() metodu ile aslında bir dosyadaki bütün satırlara ulaşabilirsiniz. Özetle for index, line in enumerate(dosya.readlines()) gibi bir for döngüsü ile bütün satırlara lineer zamanda ulaşabilirsiniz.

  3. İkinci maddede bahsettiğim for döngüsü bloku altında if aranan in line: gibi bir koşul tanımlayabilirsiniz. Eğer bu koşul doğruysa print(index) yazarak, aranan ifadenin hangi satır veya satırlarda yer aldığını ekrana yazdırabilirsiniz.

  4. Bu örnekte print(dosya.readline()) komutunu kullandığınızda, ilk satır ekrana yazdırılır. dosya.read().find(aranan) ile ilk satırı zaten okumuş olduğunuz için bir sonraki satıra geçilir ve arananın geri kalan satırlarda kaçıncı hücrede olduğunu bulursunuz. Aramaya 0. hücreden başlamak için print(dosya.readline()) ifadesinden sonra dosya.seek(0) yazmanız gerekir.

Örneğin:

merhaba
dünya

Yukarıdaki ifadeyi içeren bir metin dosyasında dosya.read().find("dünya") ifadesini çalıştırırsanız ekrana 14 yazısı yazdırılacaktır. Bu dünya stringinin 14. hücrede başladığı anlamına geliyor. Ama bu read fonksiyonundan önce bir de readlines() kullanırsanız, string bu kez sanki 0. hücredeymiş gibi bir çıktı alacaksınız.

Dolayısıyla aranan ifadenin hangi satırda olduğunu bulmak için izlediğiniz yöntem uygun değil.

Ek bilgi:

Aşağıdaki ifade ile

dosya = open("test.txt", "r+", encoding="utf-8")
print(dosya.readlines())
dosya.close()

şu ifade aynı işlemi yapar.

with open("test.txt", "r+", encoding="utf-8") as dosya:
    print(dosya.readlines())

Dolayısıyla with deyimi ile açılan bir dosya, with blokunun sonuna gelindiğinde kapatılmış olur.

dediğiniz yöntemden önce kendim denedim for döngüsü ile. az önce sizin yönteminizi de denedim. oldu sayılır. teşekkür ederim.