Ich habe einen Code in Python geschrieben, der / verwendet, um eine bestimmte Datei in einem Ordner zu erstellen. Wenn ich den Code in Windows verwenden möchte, funktioniert er nicht. Gibt es eine Möglichkeit, den Code in Windows und Linux zu verwenden?
In Python verwende ich diesen Code:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Wenn ich meinen Code in einem Windows-Computer verwende, funktioniert mein Code nicht.
Wie verwende ich "/" (Verzeichnis-Trennzeichen) unter Linux und Windows?
/
in Verzeichnispfaden. Welches spezifische Problem haben Sie? Veröffentlichen Sie einen Code, der das Problem veranschaulicht.Antworten:
Verwenden Sie
os.path.join()
. Beispiel :os.path.join(pathfile,"output","log.txt")
.In Ihrem Code wäre das:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
quelle
os.path.join
verwendet eine komplexere Logik, um mehrere relative Pfadkomponenten miteinander abzugleichen. Wenn Sie sie nur verketten möchten,os.sep.join
ist dies die richtige Wahl.Verwenden:
um zu sehen, wie Separator auf einem aktuellen Betriebssystem aussieht.
In Ihrem Code können Sie verwenden:
quelle
Sie können os.sep verwenden :
quelle
os.path.normpath(pathname)
sollte auch erwähnt werden, da es unter Windows/
Pfadtrennzeichen in\
Trennzeichen konvertiert . Es bricht auch redundante uplevel Referenzen ... alsoA/B
undA/foo/../B
undA/./B
alle werdenA/B
. Und wenn Sie Windows sind, werden diese alleA\B
.quelle
os.path.normpath('a/b/c/d/file.ext')
alsos.path.join('a','b','c','d','file.ext')
wenn ich einen langen Pfad angeben muss.os.path.join
einfach alles, was zur Verfügung gestellt wird. zBjoin("a/b", "c\d")
gibta/b\c\d
(auf Windows). Aber ich kann das erwartete Ergebnis mit der richtigen Kombination vonjoin
undnormpath
, z. B.a\b\c\d
(unter Windows)Wenn Sie das Glück haben, Python 3.4+ auszuführen, können Sie Folgendes verwenden
pathlib
:oder gleichwertig,
quelle
Einige nützliche Links, die Ihnen helfen werden:
quelle
sep
, konnte mich aber nicht dagegen wehren, dies auch zu posten (ich nahm an, dass das OP es für zukünftige Arbeiten nützlich finden wird) :)Mach ein
import os
und benutze dannos.sep
quelle
quelle
Erstellen Sie keine Verzeichnis- und Dateinamen selbst, sondern verwenden Sie die in Python enthaltenen Bibliotheken.
In diesem Fall ist os.path relevant . Insbesondere Join, der einen neuen Pfadnamen aus einem Verzeichnis und einem Dateinamen oder Verzeichnis erstellt und aufteilt, der den Dateinamen von einem vollständigen Pfad erhält.
Ihr Beispiel wäre
quelle