Seite 1 von 1

File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 13:07
von StitZle
Hallo liebe Python Freunde,

ich habe ein Problem.

Ich möchte eine File öffnen die von einem Spiel generiert wird.
Diese File wird bei jedem Neustart oder Start des Spiels neu angelegt.

Dabei ist das Problem das die Dateien so aussehen:

Journal7627239.log
Journal846384.log
Journal7252432.log

Ist es möglich eine Datei zu öffnen, indem man nur den Anfang des Filenames angibt ?

Also zum Beispiel:

Code: Alles auswählen

journal = open("Journal" + * + ".log")


Dabei dachte ich das, dass Sternchen für den Rest des Filenames steht.

ich lösche immer alle Files in dem Ordner bevor eine neue vom Spiel erstellt wird.
Leider habe ich keinen Einfluss auf den Namen.

Ich hoffe Ihr könnt mir weiterhelfen

Niclas

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 13:25
von serki92

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 14:06
von snafu
Dafür ist glob() gedacht:

Code: Alles auswählen

from glob import glob

alle_treffer = glob("Journal*.log")
erster_treffer = glob("Journal*.log")[0]

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 14:10
von __blackjack__
@snafu: Wobei das `erster_` in `erster_treffer` keinerlei besondere Bedeutung hat, das ist halt *irgendein* Treffer. Wenn man die Treffer nach irgendeinem Kriterium sortiert haben möchte, dann muss man das selber explizit tun.

Ansonsten ginge auch ``some_path = next(glob.iglob('Journal*.log'))`` wenn man die Liste nicht braucht oder aufbauen möchte. Und einem egal ist welche Datei man öffnet wenn mehr als eine vorhanden ist.

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 14:23
von snafu
Der Fragestellung habe ich entnommen, dass nur ein Treffer möglich ist und es einfach um den exakten Dateinamen geht. iglob() ist auch möglich, hatte ich aber nicht genannt, damit es nicht zu komplex wird für einen Anfänger. Kann man aber natürlich auch nehmen, wenn es auf die Performance ankommt.

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 14:31
von StitZle
Vielen Dank an alle!

Ich habe es hinbekommen.

ED_journal_file = glob.glob("Journal*.log")[0]

Hat mir sehr geholfen

Niclas

Re: File öffnen (Spezieller Fall)

Verfasst: Donnerstag 15. November 2018, 15:49
von __blackjack__
@StitZle: Wobei der Name aus drei Gründen nicht passt: a) Er hält sich nicht an die Namenskonventionen: klein_mit_unterstrichen für alles ausser Konstanten (KOMPLETT_GROSS) und Klassen (MixedCase). b) Er enthält mit ED einen kryptischen Präfix. c) `_file` ist keine gute Idee für etwas das *keine* Datei sondern ein Datei*name* ist. Von etwas das `*_file` heisst, würde man erwarten das es beispielsweise `read()`/`write()`/`close()` als Methoden auf dem Objekt gibt.