Ich denke, ich kann hier kein größeres Bild sehen. Aber im Grunde habe ich keine Ahnung, warum Sie os.path.join
anstelle der normalen String-Verkettung verwenden würden?
Ich habe hauptsächlich VBScript verwendet, daher verstehe ich den Sinn dieser Funktion nicht.
Antworten:
tragbar
Schreiben Sie Dateipfadmanipulationen einmal und es funktioniert kostenlos auf vielen verschiedenen Plattformen. Das abgrenzende Zeichen wird entfernt, was Ihre Arbeit erleichtert.
Clever
Sie müssen sich keine Sorgen mehr machen, ob dieser Verzeichnispfad einen abschließenden Schrägstrich hatte oder nicht .
os.path.join
wird es hinzufügen, wenn es muss.klar
Durch
os.path.join
die Verwendung wird anderen Personen, die Ihren Code lesen, klar, dass Sie mit Dateipfaden arbeiten. Benutzer können den Code schnell durchsuchen und feststellen, dass es sich um einen Dateipfad handelt. Wenn Sie sich entscheiden, es selbst zu erstellen, werden Sie den Leser wahrscheinlich davon abhalten, tatsächliche Probleme mit Ihrem Code zu finden: "Hmm, einige String-Concats, eine Substitution. Ist dies ein Dateipfad oder was? Gah! Warum hat er ihn nicht verwendetos.path.join
?" :) :)quelle
os.path.join
, aber wenn Sie dies tun, tun Sie es aus den richtigen Gründen. Auf os.path.join wird viel Frachtkult betrieben. "Eine dumme Konsequenz ist der Hobgoblin der kleinen Köpfe", wie sie sagen.Funktioniert unter Windows mit '\' und Unix (einschließlich Mac OS X) mit '/'.
Für posixpath ist hier der einfache Code
In [22]: os.path.join?? Type: function String Form:<function join at 0x107c28ed8> File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py Definition: os.path.join(a, *p) Source: def join(a, *p): """Join two or more pathname components, inserting '/' as needed. If any component is an absolute path, all previous path components will be discarded.""" path = a for b in p: if b.startswith('/'): path = b elif path == '' or path.endswith('/'): path += b else: path += '/' + b return path
Ich habe keine Fenster, aber das gleiche sollte mit '\' vorhanden sein.
quelle
/
funktioniert es jedoch unter Windows mit CPython…Es ist OS-unabhängig. Wenn Sie Ihre Pfade als C: \ Was auch immer fest codieren, funktionieren sie nur unter Windows. Wenn Sie sie mit dem Unix-Standard "/" fest codieren, funktionieren sie nur unter Unix. os.path.join erkennt das Betriebssystem, unter dem es ausgeführt wird, und verbindet die Pfade mit dem richtigen Symbol.
quelle
If you hardcode them with the Unix standard "/" they will only work on Unix.
Das ist falsch. "/" funktioniert gut unter Windows UND Linux / Unix / BSD / Darwin.