Seite 1 von 1

Inhalt aus txt Dateien rausfiltern

Verfasst: Dienstag 6. Juli 2021, 21:08
von Hallo12
Einen wunderschönen Guten Tag wünsche ich euch,

ich habe ein Problem...ich habe eine txt Datei mit einem Inhalt. Zu dem Inhalt kann ich Texte in einer bestimmten Form hinzufügen. Jetzt zu meiner Frage: Ich möchte für jeden Eintrag, dass das Programm dann immer schön zählt und jedem neuen Eintrag eine Nummer geht. Also 1. Eintrag bekommt die Nummer 1, 2. Eintrag Nummer 2 usw. Das habe ich auch soweit hinbekommen allerdings ist es so, dass wenn ich das Programm beende und es dann wieder starte und einen neuen Eintrag hinzufüge dann würde es sonst passieren, dass das Programm dann wieder von 0 anfängt und ich dann mehrere Einträge mit der gleichen Zahl habe, deshalb will ich, dass das Programm nun die letzte Nummer vom letzte Eintrag raussucht. Das ist mein Problem..ich habe jetzt schon viel gelesen aber ich kam nicht wirklich weiter, weil überall das Gleiche stand. Im Anhang habe ich jetzt einfach mal Spaß Einträge in die txt Datei eingefügt. Es geht wie gesagt um die Zahl am Anfang von jedem Eintrag.

Ich bedanke mich im Voraus für eure Hilfestellungen

Code: Alles auswählen

def Number_Last():
        bishergrößte_Zahl = 0
        File_Name = open("Ship List Names and Urls.txt", "r+")
        Read_File = File_Name.readline()
        
                 return Nummer
        File_Name.close()

def Add_to_List():
    File_Name = 'Ship List Names and Urls.txt' 
    Url_Eingabe = Url_Entry.get()
    Ship_Name_Eingabe = Ship_Name_Entry.get()
    Clan_Eingabe = Clan_Entry.get()
    Captain_Eingabe = Captain_Entry.get()
    Nummer = Number_Last()

    if Clan_Eingabe == "":
            Clan_Eingabe_richtig = str('None')
    if Captain_Eingabe == "":
            Captain_Eingabe_richtig = str('None')
    
    if Ship_Name_Eingabe and Url_Eingabe != "":
        with open(File_Name, 'a') as datei:
         datei.write("""\n %s. Ship Name: %s  
            Url: %s \n
            Clan*: %s \n
            Captain*: %s \n
------------------------""" % (Nummer, Ship_Name_Eingabe, Url_Eingabe, Clan_Eingabe_richtig, Captain_Eingabe_richtig))
        
        messagebox.showinfo("Info","Your Ship was successfull appended to ship list")
        Url_Entry.delete(0, END)
        Ship_Name_Entry.delete(0, END)
        datei.close()
#Das ist der wichtige Ausschnitt im Code um den es geht...ich habe das was versucht aber das klappt nicht :/

#hier ist die txt Beispiel Datei
4. Ship Name: AgaBaga
Url: Aga
Clan*: Booga
Captain*: Bob
------------------------
5. Ship Name: AgaBuga #hier zum Beispiel hätte ich es gerne, wenn das Programm dann wenn das Programm gestoppt wurde dann trotzdem mit 6.
Url: Bebo #weiter macht
Clan*: haha
Captain*: kkd
------------------------
Vielen Dank :D

P.S Ja ich bin noch ein Anfänger und bitte jetzt nicht böse auf mich sein, weil wahrscheinlich irgendwann irgendwer schon so ne ähnliche Frage gestellt hat bruh

Re: Inhalt aus txt Dateien rausfiltern

Verfasst: Mittwoch 7. Juli 2021, 08:10
von Sirius3
Deine Einrückungen sind kaputt. So kann man den Code nicht verstehen. Eingerückt wird immer mit 4 Leerzeichen pro Ebene.
Variablennamen und Funktionen werden komplett klein geschrieben.
Alles was eine Funktion braucht, muß sie über ihre Argumente bekommen. Bei GUI-Programmen kommt man eigentlich nicht um Klassendefinitionen drumrum.

Der Filemodus r+ ist nie sinnvoll. Ein close nach einem return wird nie erreicht. Dateien werden daher immer innerhalb eines with-Statements geöffnet.
Eine Zeile einer Datei `Read_File` zu nennen, ist sehr verwirrend.
`Nummer` ist ja nirgends definiert.
'None' ist schon ein String, den mit str nochmal umzuwandeln ist komisch. Komisch ist auch der String 'None' an sich.
Das Datenformat ist, glaube ich, für Deine Anwendung auch nicht ideal. Schau Dir mal Datenformate wie JSON oder YAML an.

Re: Inhalt aus txt Dateien rausfiltern

Verfasst: Mittwoch 7. Juli 2021, 17:05
von Hallo12
Danke Sirius für deine Tipps..
Ich habe da einfach den Code reingepackt, weil ich einfach nicht mehr weiter weiß... und mit Json Dateien habe ich schon gearbeitet aber mit denen kam ich nicht so ganz weiter und hatte da in anderen Programmen Probleme mit Json. Txt Dateien sahen eigentlich sehr einfach aus zuinterpretieren. Nummer ist das was ja dann mit dem neuen Objekt in die txt Datei hinzugefügt soll mit der jeweiligen Nummer.

Re: Inhalt aus txt Dateien rausfiltern

Verfasst: Mittwoch 7. Juli 2021, 17:16
von __blackjack__
@Hallo12: Warum soll da überhaupt eine Nummer gespeichert werden? Die Information ist redundant und kann einfach beim einlesen erzeugt werden.

Und standardisierte Formate für die es bereits Module gibt, sind eigentlich immer einfacher als das Rad neu zu erfinden und sich selbst irgendein komisches Textformat zu basteln.

CSV wäre hier eventuell auch noch ein Format das man verwenden kann und für dass es ein Modul in der Standardbibliothek gibt.

Re: Inhalt aus txt Dateien rausfiltern

Verfasst: Donnerstag 8. Juli 2021, 16:49
von Hallo12
--geklärt--

Re: Inhalt aus txt Dateien rausfiltern

Verfasst: Donnerstag 8. Juli 2021, 17:12
von Hallo12
Hat sich geklärt :D

Trotzdem Danke :D