Çözüldü Python dosya içerisinden rastgele veri almak

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

bedrhnaliakcy

Hectopat
Katılım
16 Temmuz 2018
Mesajlar
142
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
İndie software
Merhaba arkadaşlar, dosya arama sistemi oluşturmak istiyorum ama arama işlemini kullanıcıdan alınan veri ye göre yani kullanıcı "Python" yazınca klasörde onu arayacak ve içerisinde okuma/yazma işlemleri yapacağım.

Python:
vote = input("A-Z hangi harf ile test olmak istersiniz veya karışık mı?(abc= karışık):\t")

with os.scandir("D:\\programlama\\python\\AKA-Project\\Project-9.8.22\\abc-word") as tarama:
 for belge in tarama:
 if fnmatch.fnmatch(belge.name, vote):
 print(belge.name)

Ben vote değişkenini kullanarak nasıl arama yapabilirim?
Bu arada program çalışıyor. Yalnız, kullanıcı girdiği dosyanın ismini arıyor fakat uzantısı ile girilmediği için sonuç bulamıyor.
Şimdi konu şu: Elimde tek sütun +1000 satırlı bir veri var ve bu veri .txt uzantılı. Üstelik bunun gibi birden fazla veri var, bunların içerisinden kullanıcının girmiş olduğu değere göre dosyayı bulup, içerisinden yani yüksek satırlı veriden random bir değer alacak. Ben bunu normal dosya okuma işlemleri ile yapamadım.
Kendi çözümüm: Dosya ismini alarak sonuna dosya uzantısını ekledim ve dosyayı buldu. Okuma işlemini ise pandas csv üzerinden yaptım.

Python:
dosya = pd.read_csv(documents)

Şeklinde okuma işlemini yapıp iloc[] üzerinden random sayı üretip konuma göre veri aldım.
 
Son düzenleyen: Moderatör:
Çözüm
Eğer dediğim gibi olmasını istiyorsanız şu komutlar işinize yarar. Bu kodları random_file.py isimli bir dosya oluşturup içine atın ve projeye import edin.
Python:
import os
import random


class NotFoundError:
    def __init__(self):
        self.err_code = 'File not found.'

    def get_error(self):
        print(self.err_code)


directory = 'Buraya arama yapmak istediğiniz directoryi yazın'
extention = '.txt'  # Burası aramak istediğiniz dosyanın uzantısı, uzantı olmasını istemiyorsanız boş bırakın.


def extract(file_list):
    extracted_files = []
    for file_name in file_list:
        if file_name.endswith(extention):
            extracted_files.append(file_name)

    return extracted_files


def get_random_in_file(file_name):
    files = extract(os.listdir(directory), extention)
    if file_name + extention in files:
        cur_file = open(directory + '/' + extention)
        cur_file_in = cur_file.readlines()
        cur_file.close()
        return random.choice(cur_file_in)
    else:
        return NotFoundError()

Ardından random_file.get_random_in_file(find_file) komutunun içine yazdığınız parametrede uzantı olmasa bile kendisi tanımladığınız uzantıyı sonuna ekleyerek arama yapacak ve o dosya varsa rastgele bir satırı değer olarak döndürecek.
Merhaba arkadaşlar, dosya arama sistemi oluşturmak istiyorum ama arama işlemini kullanıcıdan alınan veri ye göre yani kullanıcı "Python" yazınca klasörde onu arayacak ve içerisinde okuma/yazma işlemleri yapacağım.

Python:
vote = input("A-Z hangi harf ile test olmak istersiniz veya karışık mı?(abc= karışık):\t")

with os.scandir("D:\\programlama\\python\\AKA-Project\\Project-9.8.22\\abc-word") as tarama:
 for belge in tarama:
 if fnmatch.fnmatch(belge.name, vote):
 print(belge.name)

Ben vote değişkenini kullanarak nasıl arama yapabilirim?
Bu arada program çalışıyor. Yalnız, kullanıcı girdiği dosyanın ismini arıyor fakat uzantısı ile girilmediği için sonuç bulamıyor.
Şimdi konu şu: Elimde tek sütun +1000 satırlı bir veri var ve bu veri .txt uzantılı. Üstelik bunun gibi birden fazla veri var, bunların içerisinden kullanıcının girmiş olduğu değere göre dosyayı bulup, içerisinden yani yüksek satırlı veriden random bir değer alacak. Ben bunu normal dosya okuma işlemleri ile yapamadım.
Kendi çözümüm: Dosya ismini alarak sonuna dosya uzantısını ekledim ve dosyayı buldu. Okuma işlemini ise pandas csv üzerinden yaptım.

Python:
dosya = pd.read_csv(documents)

Şeklinde okuma işlemini yapıp iloc[] üzerinden random sayı üretip konuma göre veri aldım.
Yani kullanıcının ismini girdiği dosyadan rastgele veri almak istiyorsunuz değil mi?
 
Merhaba arkadaşlar, dosya arama sistemi oluşturmak istiyorum ama arama işlemini kullanıcıdan alınan veri ye göre yani kullanıcı "Python" yazınca klasörde onu arayacak ve içerisinde okuma/yazma işlemleri yapacağım.

Python:
vote = input("A-Z hangi harf ile test olmak istersiniz veya karışık mı?(abc= karışık):\t")

with os.scandir("D:\\programlama\\python\\AKA-Project\\Project-9.8.22\\abc-word") as tarama:
 for belge in tarama:
 if fnmatch.fnmatch(belge.name, vote):
 print(belge.name)

Ben vote değişkenini kullanarak nasıl arama yapabilirim?
Bu arada program çalışıyor. Yalnız, kullanıcı girdiği dosyanın ismini arıyor fakat uzantısı ile girilmediği için sonuç bulamıyor.
Şimdi konu şu: Elimde tek sütun +1000 satırlı bir veri var ve bu veri .txt uzantılı. Üstelik bunun gibi birden fazla veri var, bunların içerisinden kullanıcının girmiş olduğu değere göre dosyayı bulup, içerisinden yani yüksek satırlı veriden random bir değer alacak. Ben bunu normal dosya okuma işlemleri ile yapamadım.
Kendi çözümüm: Dosya ismini alarak sonuna dosya uzantısını ekledim ve dosyayı buldu. Okuma işlemini ise pandas csv üzerinden yaptım.

Python:
dosya = pd.read_csv(documents)

Şeklinde okuma işlemini yapıp iloc[] üzerinden random sayı üretip konuma göre veri aldım.
Şuan sen bizden yardım mı istiyorsun yoksa soruyu çözüp burada paylaşmak mı istedin?
 
Şuan sen bizden yardım mı istiyorsun yoksa soruyu çözüp burada paylaşmak mı istedin?
hocam benim ki çözüm ama uzantıyı sonuna eklemem gerekiyor. Peki uzantısını bilmediğim dosyalar ne olacak. Ben geçici bir çözüm buldum ama ileride illaha ki lazım olacak

Yani kullanıcının ismini girdiği dosyadan rastgele veri almak istiyorsunuz değil mi?
Aynen hocam
 
Eğer dediğim gibi olmasını istiyorsanız şu komutlar işinize yarar. Bu kodları random_file.py isimli bir dosya oluşturup içine atın ve projeye import edin.
Python:
import os
import random


class NotFoundError:
    def __init__(self):
        self.err_code = 'File not found.'

    def get_error(self):
        print(self.err_code)


directory = 'Buraya arama yapmak istediğiniz directoryi yazın'
extention = '.txt'  # Burası aramak istediğiniz dosyanın uzantısı, uzantı olmasını istemiyorsanız boş bırakın.


def extract(file_list):
    extracted_files = []
    for file_name in file_list:
        if file_name.endswith(extention):
            extracted_files.append(file_name)

    return extracted_files


def get_random_in_file(file_name):
    files = extract(os.listdir(directory), extention)
    if file_name + extention in files:
        cur_file = open(directory + '/' + extention)
        cur_file_in = cur_file.readlines()
        cur_file.close()
        return random.choice(cur_file_in)
    else:
        return NotFoundError()

Ardından random_file.get_random_in_file(find_file) komutunun içine yazdığınız parametrede uzantı olmasa bile kendisi tanımladığınız uzantıyı sonuna ekleyerek arama yapacak ve o dosya varsa rastgele bir satırı değer olarak döndürecek.
 
Son düzenleme:
Çözüm

Yeni konular

Geri
Yukarı