Muszę wyodrębnić nazwę katalogu nadrzędnego określonej ścieżki. Oto jak to wygląda:
c:\stuff\directory_i_need\subdir\file
Modyfikuję zawartość „pliku” za pomocą czegoś, co używa directory_i_need
nazwy (nie ścieżki). Stworzyłem funkcję, która da mi listę wszystkich plików, a następnie ...
for path in file_list:
#directory_name = os.path.dirname(path) # this is not what I need, that's why it is commented
directories, files = path.split('\\')
line_replace_add_directory = line_replace + directories
# this is what I want to add in the text, with the directory name at the end
# of the line.
Jak mogę to zrobić?
Odpowiedzi:
I możesz to robić tyle razy, ile potrzeba ...
Edycja: z os.path możesz użyć os.path.split lub os.path.basename:
źródło
W Pythonie 3.4 możesz użyć modułu pathlib :
źródło
Wszystko, czego potrzebujesz, to
parent
część, jeśli używaszpathlib
.Wyświetli:
W przypadku, gdy potrzebujesz wszystkich części (już omówionych w innych odpowiedziach) użyj
parts
:Następnie otrzymasz listę:
Oszczędza czas.
źródło
Najpierw sprawdź, czy masz
splitunc()
dostępną funkcję wos.path
. Pierwsza zwrócona pozycja powinna być tym, czego chcesz ... ale korzystam z Linuksa i nie mam tej funkcji, kiedy importujęos
i próbuję jej użyć.W przeciwnym razie jednym na wpół brzydkim sposobem na wykonanie zadania jest użycie:
który pokazuje pobieranie katalogu tuż nad plikiem i katalogu tuż nad nim.
źródło
Oto, co zrobiłem, aby wyodrębnić część katalogu:
Dziękuję za pomoc.
źródło
To też powinno załatwić sprawę.
źródło
Musisz umieścić całą ścieżkę jako parametr w os.path.split. Zobacz dokumentację . To nie działa jak podział na ciąg.
źródło