412 Stimmen

Warum funktioniert os.path.join() in diesem Fall nicht?

Der nachstehende Code wird nicht zusammengefügt, da der Befehl beim Debuggen nicht den gesamten Pfad, sondern nur den letzten Eintrag speichert.

os.path.join('/home/build/test/sandboxes/', todaystr, '/new_sandbox/')

Wenn ich dies teste, wird nur die /new_sandbox/ Teil des Codes.

16voto

Amber Punkte 473552

Das liegt daran, dass Ihr '/new_sandbox/' beginnt mit einer / und wird daher als relativ zum Root-Verzeichnis angenommen. Entfernen Sie das führende / .

16voto

openwonk Punkte 12225

*Versuchen Sie eine Kombination aus split("/") y `` für Zeichenketten mit bestehenden Verknüpfungen.**

import os

home = '/home/build/test/sandboxes/'
todaystr = '042118'
new = '/new_sandbox/'

os.path.join(*home.split("/"), todaystr, *new.split("/"))

Wie es funktioniert...

split("/") macht aus dem vorhandenen Pfad eine Liste: ['', 'home', 'build', 'test', 'sandboxes', '']

* vor der Liste wird für jedes Element der Liste ein eigener Parameter angegeben

10voto

NuclearPeon Punkte 5239

Um Ihre Funktion portabler zu machen, verwenden Sie sie als solche:

os.path.join(os.sep, 'home', 'build', 'test', 'sandboxes', todaystr, 'new_sandbox')

o

os.path.join(os.environ.get("HOME"), 'test', 'sandboxes', todaystr, 'new_sandbox')

4voto

YOU Punkte 113320

Versuchen Sie es mit new_sandbox nur

os.path.join('/home/build/test/sandboxes/', todaystr, 'new_sandbox')

4voto

ghostdog74 Punkte 305138

Machen Sie es so, ohne die zusätzlichen Schrägstriche

root="/home"
os.path.join(root,"build","test","sandboxes",todaystr,"new_sandbox")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X