Найти - Пользователи
Полная версия: Подскажите как написать скрипт поиска по файлу в Tkinter
Начало » Python для новичков » Подскажите как написать скрипт поиска по файлу в Tkinter
1 2
Alexhaky
Помогите пожалуйста нужно написать скрипт который будет искать информацию в файле и выводить данные.

ПРИМЕР:

Тип звонка:
Дата звонка:
Время звонка:
Имя клиента:
Телефон:
Автомобиль:
Автомат:
Коментарии:

Тип звонка:
Дата звонка:
Время звонка:
Имя клиента:
Телефон:
Автомобиль:
ДТ:
Коментарии:

если я ввёл (ДТ) то будет выводить второй столбик
а если (Автомат) то первый
также с именем и прочем если кто может помогите я только учу и примера пока не нашол а вот пример программы которую я только создал без скриптов чисто интерфейс:

from tkinter import*
from tkinter.filedialog import *


def open_file():
op = askopenfilename()
for l in fileinput.input(op):
rezultat .insert(END, l)

def save_file():
sf = asksaveasfilename()
fa = rezultat.get(1.0, END)
file = open(sf, 'w')
file.write(fa + "\n")
file.close()

def exitknopka(event):
okno_poiska.destroy()


def exit_prog():
okno_poiska.destroy()



okno_poiska = Tk()
GLOBALNAME = " АГС ЗВОНКИ"
okno_poiska.title(GLOBALNAME)
okno_poiska.geometry('800x600')
okno_poiska.resizable(width=False, height=False)

#Меню
okno_poiska_menu = Menu(okno_poiska)
okno_poiska.configure(menu=okno_poiska_menu)
one_item = Menu(okno_poiska_menu, tearoff=0)
okno_poiska_menu.add_cascade(label="Файл", menu=one_item)
one_item.add_command(label="Открыть", command=open_file)
one_item.add_command(label="Сохранить как ...", command=save_file)
one_item.add_separator()
one_item.add_command(label="Выход",
command=exit_prog)

#Поля ввода
stroka_poiska = Entry(okno_poiska, width=60, font=15 )
rezultat= Text(okno_poiska, width=58, height=25, font=("Ubuntu", 12), wrap='word')

stroka_poiska.place(x=20, y=20)
rezultat.place(x=10, y=120)

#Кнопки
knopka_poiska = Button(okno_poiska, text="Поиск", width=10)
knopka_vuxod = Button(okno_poiska, text="Выход", width=10)

knopka_poiska.bind("<Button-1>", 'poisk')
knopka_vuxod.bind("<Button-1>", exitknopka)

knopka_poiska.place(x=650, y=20)
knopka_vuxod.place(x=680, y=560)

#Галочки
pg1a = IntVar()
pg2a = IntVar()
pg3a = IntVar()

pg1 = Checkbutton(okno_poiska, text="Лучший звонок", variable=pg1a,onvalue=1,offvalue=0)
pg2 = Radiobutton(okno_poiska, text="Механика", variable=pg2a,value=1)
pg3 = Radiobutton(okno_poiska, text="Автомат", variable=pg2a,value=2)
pg4 = Radiobutton(okno_poiska, text="Бензин", variable=pg3a,value=1)
pg5 = Radiobutton(okno_poiska, text="ДТ", variable=pg3a,value=2)

pg1.place(x=20, y=60)
pg2.place(x=160, y=60)
pg3.place(x=300, y=60)
pg4.place(x=440, y=60)
pg5.place(x=580, y=60)

#Надписи
AGS = Label(okno_poiska, text="Компания АГС ", font=("Ubuntu", 18))
AGS1 = Label(okno_poiska, text="была основана", font=("Ubuntu", 18))
AGS2 = Label(okno_poiska, text="в 1996 году", font=("Ubuntu", 18))

AGS.place(x=580, y=140)
AGS1.place(x=575, y=190)
AGS2.place(x=600, y=240)

#Картинка
im1 ="/home/ithelp/Emblema.png"
ph_im =PhotoImage(file=im1)
canv1 = Canvas(okno_poiska,)
canv1.create_image(1,1,anchor=NW,image=ph_im)
canv1.place(x=565, y=290)


okno_poiska.mainloop()
за название переменных не ругайте я просто быстро хочу понять суть а потом буду писать с самого нуля.
4kpt_IV
Не пойму вопроса. Что не получается. Конкретизируйте…
Alexhaky
4kpt_IV
Не пойму вопроса. Что не получается. Конкретизируйте…
Я просто не знаю как производить поиск по файлу плюс ко всему мне надо чтобы выводило информацию в таком виде:
Тип звонка:
Дата звонка:
Время звонка:
Имя клиента:
Телефон:
Автомобиль:
Автомат:
Коментарии:
Я незнаю как тогда сохранять информацию втом смысле что файл будет постоянно дозаписыватся и мне нужен поиск по дате естественно нужно чтоб выводило всё что записывалось в тот день также по имени и т. д. вот и немогу найти информацию или пример для того чтоб доработать хотябы так что помогите если вам не сложно буду признателен грубо говоря мне нужен поисковик на питоне только по файлам
Py_User
Я просто не знаю как производить поиск по файлу…
Чтобы искать в файле какие-нибудь данные, нужно, что-бы для начала они там были..
Сохраняйте данные в обычной текстовой строке, разделяя параметры каким-нибудь спец-символом, который не встретится в тексте. Для вывода и поиска тупо читаем строку и разбиваем ее на параметры.

ps/ вообще-то для таких целей придумали базы данных - по описанию хватит sqlite
Alexhaky
Py_User
сохранение в файл идет построчно как в примере запись в столбик но надо чтоб не определённую строку выводил а весь столбик в котором присутствует нужная информация либо несколько столбцов с общей информацией если такова есть
Py_User
и в чем проблема? - просто парсите файл и выводите, что нужно
Alexhaky
Py_User
и в чем проблема? - просто парсите файл и выводите, что нужно
вот сматрите если мне надо найти все данные на Григория
Тип звонка:
Дата звонка:12.11.11
Время звонка:
Имя клиента:Григорий
Телефон:
Автомобиль:
Автомат:
Коментарии:

Тип звонка:
Дата звонка:28.10.14
Время звонка:
Имя клиента:Григорий
Телефон:
Автомобиль:
Автомат:
Коментарии:
И т д
и только так поисковик с фильтрами мне просто пример и подсказать как это можно написать я только у чусь и наткнулся на большой подводный риф но нужно его преодалеть вот поэтому я и спрашиваю как и почему мне маленький пример и объяснение и я буду на седьмом небе от счастья ведь на других форумах я так и не дождался ответа все кидают ссылки и говорять читайте файл выводите информацию и т. д. но чтоб показать и хоть чучуть объяснить некто не может будто сами не знают
Py_User
что примерно должно быть в файле:
 // первые 2 строки - пояснение параметров 
// ph_type # data # time # name # phone # kpp_type
1 # 12.12.2016 # 12:12 # Вася # 123-34-36 # avt
1 # 12.12.2016 # 12:15 # Коля # 535-34-56 # dt
1 # 12.12.2016 # 12:18 # Коля # 118-34-44 # avt
............
сравниваете на соответствие с нужным полем (например kpp_type). совпадает - выводите, нет пропускаете и читаете из файла следующую строку
Alexhaky
Py_User
что примерно должно быть в файле:

Вы даже не представляете как вы мне помогли спасибо только подскажите ещё одно я в файл сохраняю вот так :
 a = pg1a.get()
b = pg2a.get()
c = pg3a.get()
if a == 1 :
sf = '/home/ithelp/proverka.txt'
fa = p1.get(1.0, END)
fb = p2.get(1.0, END)
fc = p3.get(1.0, END)
fd = p4.get(1.0, END)
fe = p5.get(1.0, END)
ff = p6.get(1.0, END)
fg = p7.get(1.0, END)
file = open(sf, 'a')
file.write("ЛУЧШИЙ ЗВОНОК"+'\n' )
file.write("Тип звонка:" + fa)
file.write("Дата звонка:" + fb)
file.write("Время звонка:" + fc)
file.write("Имя клиента:" + fd)
file.write("Телефон:" + fe)
file.write("Автомобиль:" + ff)
if b == 1:
file.write("Механика" +'\n')
if c == 1:
file.write("Бензин" +'\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
file.write("ДТ" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()

else:
file.write("Автомат" + '\n')
if c == 1:
file.write("Бензин" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
file.write("ДТ" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
sf = '/home/ithelp/proverka.txt'
fa = p1.get(1.0, END)
fb = p2.get(1.0, END)
fc = p3.get(1.0, END)
fd = p4.get(1.0, END)
fe = p5.get(1.0, END)
ff = p6.get(1.0, END)
fg = p7.get(1.0, END)
file = open(sf, 'a')
file.write("Тип звонка:" + fa)
file.write("Дата звонка:" + fb)
file.write("Время звонка:" + fc)
file.write("Имя клиента:" + fd)
file.write("Телефон:" + fe)
file.write("Автомобиль:" + ff)
if b == 1:
file.write("Механика" +'\n')
if c == 1:
file.write("Бензин" +'\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
file.write("ДТ" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
file.write("Автомат" + '\n')
if c == 1:
file.write("Бензин" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()
else:
file.write("ДТ" + '\n')
file.write("Коментарии:" + fg + '\n')
file.close()
[code /]


Может мне изменить сохранение ведь как в файле выглядит не имеет значения главное чтоб при поиске выводило правильно
Py_User
ИМХО лучше написать две функции GetData, SaveData и использовать их по необходимости…
 def GetData(fil)
........
   str=fil.readline()
    return str.split('#') # формируем из строки список параметров
.....
def SaveData(a,b,c)
........
   str=a+'#'+b+'#'+c.... # формируем строку для сохранения
   fil.writeline(str)    
.....
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB