Seite 1 von 1

Return in Loop Problem

Verfasst: Mittwoch 12. September 2018, 10:09
von DMD-OL
hi nocheinmal :roll:
wieso funktioniert der code ohne probleme mit
print data und nicht mit return data (was ich brache)?
Zum Auslesen einer Textdatei:

Code: Alles auswählen

        
        def chunks(fh, size):
            while 1:
                startat = fh.tell()
                # print startat #file's object current position from the start
                fh.seek(size, 1)  # offset from current postion -->1
                data = fh.readline()
                yield startat, fh.tell() - startat  # doesnt store whole list in memory
                if not data or self.run_string is False:
                    break
        
        for ele in chunks(fh, size):
            self.prog_varfile.set(ele[0])
            self.daten.set("Verarbeitet:  " + str(ele[0]) + " Bytes / " +
                           str(filesize) + " Bytes")
            self.sizecall.set("In Bearbeitung:  " + str(size) + " Bytes")
            self.zeit_var.set("Verbleibend: " + str(teiler) + " Prozesse")
            teiler -= 1
            fh.seek(ele[0])  # startat
            data = fh.read(ele[1])  # endat
            #print data #alles tip top in ordnung
            return data # alles im arsch
die funktion rufe ich hiermit auf:

Code: Alles auswählen

            with fh:
                ass_name, ass_ending = work[2].split('.')
                if ass_name == 'DATANORM':
                    try:
                        int(ass_ending)
                        print "DATANORM.001-.999: '{}'".format(datafile)
                        if os.path.isfile(datafile):
                            #self.get_data(fh, datafile)
                            print self.get_data(fh, datafile)
  
wenn ich return data benutze, ist das tkinter.fenster mit progressbar, etc. komplett weiß.

Re: Return in Loop Problem

Verfasst: Mittwoch 12. September 2018, 12:10
von __blackjack__
@DMD-OL: ``return data`` gibt `data` vom ersten Schleifendurchlauf an den Aufrufer zurück. Das heisst es beendet die Schleife.