Hallo Leute.
Ich bin gerade dabei mir Python anzueignen.
Aktuell bleibe ich hängen bei dem Problem Dateien aus einen anderen Verzeichnis einzulesen bzw. darin zu schreiben.
Ich verwende PyCharm.
Aktuell bin ich auch ein wenig verwirrt. Wenn ich die offizielle schreibweise nutze (W3) meckert PyCharm wenn ich es ändere geht es. Siehe unten. Ich dachte es gibt nur eine richtige Syntax!?
1. Wie wird jetzt korrekterweise eine Datei aus einem anderen Verzeichnis geholt ?
2. Wie ist die richtige Syntax wenn Dateien gelesen/beschrieben werden sollen ?
Das funktioniert: file = open(r"D:\IT\Python lernen\XXX\CCCC\VVVV\schreiben.txt")
Das funktioniert nicht: file = open(w"D:\IT\Python lernen\XXX\CCCC\VVVV\schreiben.txt")
Das funktioniert nicht: file = open("D:\IT\Python lernen\XXX\CCCC\VVVV\schreiben.txt", "w")
Danke schon mal für das Feedback.
Dateien lesen u. schreiben aus anderen Verzeichnis
Und die Fehlermeldung zu "funkioniert nicht" lautet?
Und was soll denn ein "w" vor einer Zeichenkette bewirken? Das sollte syntaktisch falsch sein.
Das "r" bedeutet, dass es sich um einen "Raw String" handelt:
Und was soll denn ein "w" vor einer Zeichenkette bewirken? Das sollte syntaktisch falsch sein.
Das "r" bedeutet, dass es sich um einen "Raw String" handelt:
Code: Alles auswählen
>>> r"\Test"
'\\Test'
- merovinger
- User
- Beiträge: 11
- Registriert: Sonntag 2. April 2023, 10:35
Nein nix gefunden Backslash-Kram.
Da man hier keine Screenshots reinpasten kann, einmal den Code und ie Ausgabe.
file = open("D:\\Test\01 - Ordner\02 - Ordner\03 - Ordner\schreiben.txt", "r")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: 'D:\\Test\x01 - Ordner\x02 - Ordner\x03 - Ordner\\schreiben.txt'
Da man hier keine Screenshots reinpasten kann, einmal den Code und ie Ausgabe.
Code: Alles auswählen
file = open("D:\\Test\01 - Ordner\02 - Ordner\03 - Ordner\schreiben.txt", "r")
print(file.read())
file.close()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: 'D:\\Test\x01 - Ordner\x02 - Ordner\x03 - Ordner\\schreiben.txt'
- __blackjack__
- User
- Beiträge: 13117
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@merovinger: Text sollte sowieso als Text gepostet werden und nicht als Bild.
In der Zeichenkette sind drei \ die jeweils einen Bytewert erzeugen der unter Windows nicht in Dateinamen vorkommen darf. Dann zwei Backslashes die *einen* Backslash erzeugen, und eine Kombination die unverändert übernommen wird weil "\s" keine besondere Bedeutung hat. Man sollte auch da den Backslash mit einem Backslash schützen. Oder eben ”raw”-Zeichenkettenliterale verwenden. Was Du im ersten Beitrag ja bereits gemacht hast. Warum nimmst Du nicht einfach die Variante die funktioniert.
Die Details zu Zeichenketten und Escape-Sequenzen stehen in der Python-Dokumentation: https://docs.python.org/3/reference/lex ... -sequences
In der Zeichenkette sind drei \ die jeweils einen Bytewert erzeugen der unter Windows nicht in Dateinamen vorkommen darf. Dann zwei Backslashes die *einen* Backslash erzeugen, und eine Kombination die unverändert übernommen wird weil "\s" keine besondere Bedeutung hat. Man sollte auch da den Backslash mit einem Backslash schützen. Oder eben ”raw”-Zeichenkettenliterale verwenden. Was Du im ersten Beitrag ja bereits gemacht hast. Warum nimmst Du nicht einfach die Variante die funktioniert.
Die Details zu Zeichenketten und Escape-Sequenzen stehen in der Python-Dokumentation: https://docs.python.org/3/reference/lex ... -sequences
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
In der Fehlermeldung siehst Du ja schön, in was \01 umgewandelt wird.
Am besten benutzt man als Pfadtrenner immer /.
Dateien öffnet man mit einem with-Statement und gibt das Encoding für Textdateien immer explizit an:
Am besten benutzt man als Pfadtrenner immer /.
Dateien öffnet man mit einem with-Statement und gibt das Encoding für Textdateien immer explizit an:
Code: Alles auswählen
with open("D:/Test/01 - Ordner/02 - Ordner/03 - Ordner/schreiben.txt", encoding="utf8") as file:
print(file.read())
- merovinger
- User
- Beiträge: 11
- Registriert: Sonntag 2. April 2023, 10:35
Ich habe gerade mal ein wenig rumgespielt. Wenn ich jeweils doppelte Backslashe einsetze funtkioniert es.
Wenn ich das aber auf ein anderes Verzeichnis übertrage geht es nicht.
Gibt es Einschränkungen bei der Pfadlänge ?
Kommt Python mit Leerzeichen in Ordnernamen nicht klar ?
PyCharm sagt mir das das Verzeichnis nicht gefunden wurde.
Code: Alles auswählen
file = open("D:\\Test\\01 - Ordner\\02 - Ordner\\03 - Ordner\\schreiben.txt", "r")
print(file.read())
file.close()
Gibt es Einschränkungen bei der Pfadlänge ?
Kommt Python mit Leerzeichen in Ordnernamen nicht klar ?
PyCharm sagt mir das das Verzeichnis nicht gefunden wurde.
@merovinger: Entweder ignorierst du absichtlich sämtliche dir gegegeben Hinweise oder du überliest sie. Letzteres wäre aber schon erstaunlich, weil du nun wirklich keinen einzigen übernommen hast. Vielleicht solltest du den Thread noch einmal in Ruhe von oben bis unten lesen.
Und es drängt sich natürlich die Frage auf, wie du darauf kommst, dass Python mit Leerzeichen in Ordnernamen nicht klar kommt, wenn du in dem selben Post ja zeigst, dass es funktioniert.
Und es drängt sich natürlich die Frage auf, wie du darauf kommst, dass Python mit Leerzeichen in Ordnernamen nicht klar kommt, wenn du in dem selben Post ja zeigst, dass es funktioniert.