os.path.join linux-Pfade UND Windows-Pfade generieren ...

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
drnicolas
User
Beiträge: 121
Registriert: Sonntag 24. Juli 2016, 10:32

os.path.joind kann mir einen kompletten pfad generieren - funktioniert.

Ich habe gelernt, dass unter Windows ein anderer Pfad generiert wird als unter Linux.

Mein Skript läuft unter Linux;
ich benötige nun für eine Fehler-Mail SOWOHL den linux-Pfad als auch den Windows-pFad (die Datei liegt auf einem CIFS-share)

also etwa so:

\\LINUXSERVER\meinpfad\datei.pdf
und
/Var/spool/test/datei.pdf


geht das?
Benutzeravatar
grubenfox
User
Beiträge: 626
Registriert: Freitag 2. Dezember 2022, 15:49

Für Dateipfade gibt es mittlerweile (laut Doku seit Python 3.4) das pathlib-Modul. Das kann beides... sowohl den Linux-Pfad, als auch den Windows-Pfad.
Benutzeravatar
DeaD_EyE
User
Beiträge: 1286
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Code: Alles auswählen

from pathlib import Path, PureWindowsPath

SPOOL = Path("/var/spool/test/")


def windows_share(server, *path):
    return PureWindowsPath(f"//{server}", *path)


windows_pfad = windows_share("servername", "meinpfad", "datei.xyz")
print(windows_pfad)

linux_pfad = SPOOL / windows_pfad.name
print(linux_pfad)
Ausgabe unter Windows:
\\servername\meinpfad\datei.xyz
\var\spool\test\datei.xyz
Ausgabe unter Linux:
esp32@ganymed:~$ python3 pfad.py
\\servername\meinpfad\datei.xyz
/var/spool/test/datei.xyz
AFIK ist es besser, die normalen Schrägstriche zu verwenden anstatt der umgekehrten.
Umgekehrte Schrägstriche werden auch für die Interpretation von bestimmten Zeichen genutzt.
Das bekannteste ist \n für eine Zeilenende und \r für den Zeilenvorschub unter Windows.

Wenn man die normalen Schrägstriche möchte, nutzt man unter Linux einfach nur Path anstatt PureWindowsPath.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Antworten