ich habe eine Destopanwendung programmiert, mit 2 Buttons.
Button-Nr.1 (work_file_with_excel) soll Begriffe aus einer Exceltabelle in eine Liste (allgemein_1) lesen/schreiben
Button-Nr.2 (search_for_it) soll anhand dieser generierten Liste (allgemein_1) eine weiter Datei durchsuchen. Wenn eine Wort aus der Liste (allgemein_1) gefunden wird, soll die jeweilige komplette Zeile in eine weitere txt Datei gedruckt werden.
Leider haben ich 2 Probleme
1. Ich bekomme die Liste nicht übergeben. Wie kann ich die Liste übergeben?
2. Wenn der Button-Nr.2 (search_for_it) gedrückt wird, wird das komplette Programm auf "break" gesetzt. Wie kann ich den Code anders schreiben, dass das nicht mehr passiert ?
Hier mein Code:
Code: Alles auswählen
#import numpy as np
#import xlrd
#import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
import random
import sys
bpa_file ='Technische Gebäudeausrüstung'
gewerke_file ='Gebäudeautomation'
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
#search_file =
class filedialogdemo(QWidget):
def __init__(self, parent = None):
super(filedialogdemo, self).__init__(parent)
layout = QVBoxLayout()
self.button_1 = QPushButton("Suchliste")
self.button_1.clicked.connect(self.work_file_with_excel)
layout.addWidget(self.button_1)
self.button_2 = QPushButton("Wortsuche")
self.button_2.clicked.connect(self.search_for_it)
layout.addWidget(self.button_2)
self.setLayout(layout)
self.setWindowTitle("Lea\'s Program")
def work_file_with_excel(self):
print('fängt an')
if bpa_file == 'Technische Gebäudeausrüstung':
file_name_tga = '2018_10_26_Liste zum Prüfen_Arbeitsdatei.xlsx'
xls = pd.ExcelFile(file_name_tga, encoding_override="utf-8")
xls.sheet_names
['Allgemein', 'Nebenleistungen', 'Besondere Leistungen','von Prüfliste', 'Hersteller']
if gewerke_file == 'Gebäudeautomation':
df_1 = pd.read_excel(file_name_tga, sheet_name="Allgemein")
allgemein_1 = list (df_1['allgemein'])
print (allgemein_1)
else:
print ('anderes gewerk')
elif bpa_file == 'Rohbau':
print ('Rohbau')
def search_for_it (self):
def search_for_lines(filename, words_list):
with open('Ergebnisse.txt','w'): pass
work_file_with_excel(allgemein_1())
words_found = 0
with open(filename) as db_file:
for line_no, line in enumerate(db_file):
if any(word in line for word in words_list):
sys.stdout = open('Ergebnisse.txt', 'a')
print(line_no, ':', line)
words_found += 1
return words_found
while True:
fqWords = [allgemein_1()]
#fqWords = ['kostenlos', 'bauseits', 'komplett', 'vollständig', 'bzw.', 'somit', 'genau', 'absolut', 'Patent', 'nicht vergütet', 'ohne Vergütung']
#eigentlich sollte diese liste hier aus der funktion davor übergeben worden sein
search_for_lines("test.txt", fqWords)
break ### durch diesn button läuft kompletter code zum break -- wie kann man das ev anders lösen
def main():
app = QApplication(sys.argv)
ex = filedialogdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()