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
Kodunuzun başında `** değil
``` koyarsanız doğru görünüme ulaşabilirsiniz.
1 Beğeni
Hoşbuldum
Kod için yardımcı olabilir misiniz?
Merhaba, hoş geldiniz.
Kodunuzla alakalı öncelikle şunları söyleyeyim.
-
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.
-
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.
-
İ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.
-
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.