408 Stimmen

Wie erhält man nur den letzten Teil eines Pfades in Python?

Unter python Nehmen wir an, ich habe einen Weg wie diesen:

/folderA/folderB/folderC/folderD/

Wie kann ich nur die folderD Teil?

10voto

CB Madsen Punkte 484

Wenn Sie das native Python-Paket verwenden pathlib Es ist ganz einfach.

>>> from pathlib import Path
>>> your_path = Path("/folderA/folderB/folderC/folderD/")
>>> your_path.stem
'folderD'

Angenommen, Sie haben den Pfad zu einer Datei in OrdnerD.

>>> from pathlib import Path
>>> your_path = Path("/folderA/folderB/folderC/folderD/file.txt")
>>> your_path.name
'file.txt'
>>> your_path.parent
'folderD'

8voto

Andrew Magerman Punkte 1374

Ich mag die Teile Methode von Path für diese:

grandparent_directory, parent_directory, filename = Path(export_filename).parts[-3:]
log.info(f'{t: <30}: {num_rows: >7} Rows exported to {grandparent_directory}/{parent_directory}/{filename}')

0voto

dheinz Punkte 722

Bei meinen aktuellen Projekten übergebe ich oft hintere Teile eines Pfades an eine Funktion und verwende daher die Path Modul. Um den n-ten Teil in umgekehrter Reihenfolge zu erhalten, verwende ich:

from typing import Union
from pathlib import Path

def get_single_subpath_part(base_dir: Union[Path, str], n:int) -> str:
    if n ==0:
        return Path(base_dir).name
    for _ in range(n):
        base_dir = Path(base_dir).parent
    return getattr(base_dir, "name")

path= "/folderA/folderB/folderC/folderD/"

# for getting the last part:
print(get_single_subpath_part(path, 0))
# yields "folderD"

# for the second last
print(get_single_subpath_part(path, 1))
#yields "folderC"

Um den n-ten Teil eines Pfades, der den restlichen Pfad enthält, in umgekehrter Reihenfolge weiterzugeben, verwende ich außerdem:

from typing import Union
from pathlib import Path

def get_n_last_subparts_path(base_dir: Union[Path, str], n:int) -> Path:
    return Path(*Path(base_dir).parts[-n-1:])

path= "/folderA/folderB/folderC/folderD/"

# for getting the last part:
print(get_n_last_subparts_path(path, 0))
# yields a `Path` object of "folderD"

# for second last and last part together 
print(get_n_last_subparts_path(path, 1))
# yields a `Path` object of "folderc/folderD"

Beachten Sie, dass diese Funktion eine Path Objekt, das leicht in eine Zeichenkette umgewandelt werden kann (z. B. str(path) )

-4voto

GSto Punkte 40158
path = "/folderA/folderB/folderC/folderD/"
last = path.split('/').pop()

-7voto

Andrew Sledge Punkte 9879
str = "/folderA/folderB/folderC/folderD/"
print str.split("/")[-2]

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