Lesen Information von einer Datei

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lini
User
Beiträge: 26
Registriert: Freitag 13. November 2020, 00:39

__deets__ hat geschrieben: Mittwoch 1. Dezember 2021, 23:20 Du musst den Pfad mit / statt \ angeben, weil letzterer escape Sequenzen einleitet. Oder ein raw String literal benutzen. Mit r"C:\..".
Danke!

mit / stattt \ scheint zu funktionieren

Code: Alles auswählen

myFile1 = open('C:/Users/Onri/AppData/Local/Programs/Python/Python38/exersices/my_hope.txt', 'rt', encoding="utf8")
print(myFile1.read())
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

@Lini: Das Problem aus deinem ersten Post war übrigens nicht, dass die Datei nicht gefunden wurde, sondern dass du das Encoding der Datei nicht angegeben hast.
Da die Datei in dem selben Verzeichnis liegt wie die dein Script, würde ich den Vorschlag von __deets__ hier aus dem Thread beherzigen:

Code: Alles auswählen

from pathlib import Path
script_path = Path(__file__).resolve().parent / „relativ.dat“

with open(script_path / 'my_hope.txt', 'rt', encoding="utf8") as f:
    print(f.read())
Dateien sollte man immer mit dem with-statement öffnen, da so garantiert ist, dass sie anschließend auch wieder geschlossen werden.
Das prefix "my" bei Variablen macht nur Sinn, wenn es auch "your" gibt. Ansonsten kann man sich das sparen.
Man sollte auch keine Nummern an Namen anhängen. Wenn man tatsächlich Namen durchnummerieren muss, ist das ein deutliches Anzeichen dafür, dass man eigentlich eine Datenstruktur wie eine Liste verwenden möchte.
Allgemein gilt: benutze sprechende Namen, bei denen sowohl du als auch andere Leser sofort wissen, was sie bedeuten. (ja, ich habe hier im Beispiel "f" verwendet, aber eine Zeile lang sollte man sich das merken können und "f" ist in diesem Kontext zumindest nicht unüblich.)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

P_Python hat geschrieben: Mittwoch 1. Dezember 2021, 23:01 Du schweifst wieder ab, du sollst dich in den Fragesteller versetzen und ich glaube nicht, dass der Fragesteller irgendwas von euren Antworten verstanden hat.
Im ersten Post von __deets__ stand doch schon eine flexible Lösung die mit Pfaden relativ zum Skript arbeitet:

Code: Alles auswählen

pathlib.Path(__file__).resolve().parent / „relativ.dat“
Benutzeravatar
__blackjack__
User
Beiträge: 13101
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wenn man `Path`-Objekte benutzt, und das würde ich hier auch machen, kann man das einlesen der kompletten Textdatei auch noch ein kleines bisschen unkomplizierter haben, denn die besitzen dafür eine `read_text()`-Methode:

Code: Alles auswählen

from pathlib import Path


script_path = Path(__file__).resolve().parent

print((script_path / "my_hope.txt").read_text(encoding="utf8"))
Da braucht man dann nicht mal einen Namen für das Dateiobjekt.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten