Datei wird nicht gelesen

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
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

Hi,
Programmiere gerade ein System welches mit meiner iCloud interagiert, damit ich aber meine Zugangsdaten nicht immer neu ins Skript schreiben muss habe ich versucht das Passwort und den Benutzernamen in einer txt Datei zu speichern. Leider funktioniert es nicht.

Code: Alles auswählen

try:
    usn = open('.psw/icusn.txt','r')
    psw = open('.psw/icpsw.txt','r')
except FileNotFoundError:
     print("Daten nicht gefunden")
print(usn + psw)
Die Zugangsdaten werden in unterschiedlichen Dateien gespeichert. Ich weiß es geht eleganter, ich hätte aber gerne vorher ne Möglichkeit an die Daten zu kommen. (Wer Verbesserungsvorschläge hat, gerne reinschreiben)

Beim Ausführen kommt egal was ich mache oder wie ich den Dateipfad angebe nur die Fehlermeldung angezeigt.

Ps. Ich weiß nicht ob diese Frage in Allgemeine Fragen gehört. Vals nicht wäre es nett die Frage in den Richtigen Bereich zu setzen.
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Deine Fehlerbehandlung ist kaputt. Weil, falls ein Fehler auftritt, usn bzw psw nicht definiert sind. usn und psw sind zudem sehr schlechte Variablennamen, weil sie einen nur rätseln lassen, was die Abkürzungen denn bedeuten sollen.
Dateien öffnet man immer mit dem with-Statement, damit sie auch sauber wieder geschlossen werden.
Datei-Instanzen kann man nicht addieren. Was soll die Summe zweier offenen Dateien auch ergeben?

Wenn Du mit "die Fehlermeldung" Deine print-Ausgabe meinst, dann liegt in Deinem aktuellen Arbeitsverzeichnis kein Verzeichnis mit dem Namen .psw, bzw. in diesem Verzeichnis keine Dateiein icuusn.txt oder icpsw.txt. Diesen Fehler kannst Du dadurch beheben, dass Du solche Dateien anlegst.
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

Danke für deine Antwort @Sirius3,
meinst du dass ich bevor ich etwas in die Variablen schreibe sie erst definieren muss? Also sowas wie usn = ''? Bevor ich die Print Ausgabe geschrieben hatte kam auch eine Fehlermeldung, eben die die die Datei nicht gefunden hat. Ich hatte die Dateien aber schon erstellt und sie haben auch einen Inhalt der gelesen werden könnte.
Benutzeravatar
__blackjack__
User
Beiträge: 14056
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bio Salami: Natürlich muss man Variablen definieren bevor man sie benutzen kann, das bedeutet aber nicht das man die erst mit irgendwelchen Dummy-Werten definieren muss. Das Problem ist das wenn auch nur eine der beiden Dateien nicht gefunden wird, nichts an den Namen gebunden wird, weil das `open()` dann ja fehl schlägt und auch keinen Rückgabewert hat. Du behandelst dann die Ausnahme mit einer `print()`-Ausgabe. Und *danach* versuchst Du dann etwas mit den beiden Namen zu machen von denen mindestens einer nicht definiert ist weil das `open()` ja nicht komplett ausgeführt wurde.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

@__blackjack__ Danke aber es hilft mir irgendwie nicht weiter. Ich habe die Variablen so erstellt: usn = '' und ich habe die beiden open Befehle getrennt. Aber beide schlagen immer noch fehl.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was heisst die schlagen fehl? Wo ist der Code ohne schlechte Fehlerbehandlung, und wo ist die *vollstaendige* Fehlermeldung?
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

Der Code:

Code: Alles auswählen

usn = ''
psw = ''

try:
    psw = open('.psw/icpsw.txt','r')
except FileNotFoundError:
     print("Passwort nicht gefunden")


try:
    usn = open('.psw/icusn.txt','r')
except FileNotFoundError:
     print("Nutzeradresse nicht gefunden")
print(usn + psw)
und hier die Fehlermeldungen: FileNotFoundError: [Errno 2] No such file or directory: '.psw/icpsw.txt'
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

ps: Die dateien gibt es
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es ist dir doch schon gesagt worden, dass deine Fehlerbehandlung schlecht ist. Warum ist die da noch drin?

Und das du relative Pfade angibst, ist dir klar? Was ist denn dein Arbeitsverzeichnis, relativ zu dem die aufgeloest werden?
Benutzeravatar
Bio Salami
User
Beiträge: 63
Registriert: Mittwoch 28. Juli 2021, 14:10

Habs. Danke
Benutzeravatar
hyle
User
Beiträge: 96
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

Btw. Wenn Du Dateien öffnest, dann musst Du diese auch wieder schließen! Eine weitere bessere Möglichkeit ist das with statement zu verwenden.

Siehe dazu hier: https://docs.python.org/3/tutorial/inpu ... ting-files
Alles was wir sind ist Sand im Wind Hoschi.
Antworten