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. Kann ich das? Verwenden Sie den Code in Windows und Linux.
In python Ich verwende diesen Code:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Wenn ich meinen Code auf einem Windows-Computer verwende, funktioniert mein Code nicht.
Wie verwende ich "/" (Verzeichnisseparator) sowohl unter Linux als auch unter Windows?
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"))
Verwenden:
import os
print os.sep
um zu sehen, wie das Trennzeichen auf einem aktuellen Betriebssystem aussieht.
In Ihrem Code können Sie Folgendes verwenden:
import os
path = os.path.join('folder_name', 'file_name')
Sie können os.sep verwenden:
>>> import os
>>> os.sep
'/'
os.path.normpath(pathname)
sollte auch erwähnt werden, da es /
- Pfadtrennzeichen in \
- Trennzeichen unter Windows konvertiert. Es werden auch redundante Verweise auf höheren Ebenen ausgeblendet ... d. H. A/B
Und A/foo/../B
Und A/./B
Werden alle zu A/B
. Und wenn Sie Windows sind, werden diese alle A\B
.
Einige nützliche Links, die Ihnen helfen werden:
Wenn Sie das Glück haben, Python 3.4+) auszuführen, können Sie pathlib
verwenden:
from pathlib import Path
path = Path(dir, subdir, filename) # returns a path of the system's path flavour
oder äquivalent,
path = Path(dir) / subdir / filename
Mach ein import os
und dann os.sep
Sie können "os.sep" verwenden.
import os
pathfile=os.path.dirname(templateFile)
directory = str(pathfile)+os.sep+'output'+os.sep+'log.txt'
rootTree.write(directory)
Erstellen Sie Verzeichnis- und Dateinamen nicht selbst, sondern verwenden Sie die enthaltenen Bibliotheken von Python.
In diesem Fall ist der relevante os.path . Insbesondere Join, der einen neuen Pfadnamen aus einem Verzeichnis und einen Dateinamen oder ein Verzeichnis erstellt und aufteilt, der den Dateinamen aus einem vollständigen Pfad abruft.
Ihr Beispiel wäre
pathfile=os.path.dirname(templateFile)
p = os.path.join(pathfile, 'output')
p = os.path.join( p, 'log.txt')
rootTree.write(p)