прочитайте строку назад и завершите сначала '/' - PullRequest
3 голосов
/ 02 ноября 2009

Я хочу извлечь только часть имени файла пути. Мой код ниже работает, но я хотел бы знать, каков лучший (питонический) способ сделать это.

filename = ''
    tmppath = '/dir1/dir2/dir3/file.exe'
    for i in reversed(tmppath):
        if i != '/':
            filename += str(i)
        else:
            break
    a = filename[::-1]
    print a

Ответы [ 5 ]

12 голосов
/ 02 ноября 2009

Попробуйте:

#!/usr/bin/python
import os.path
path = '/dir1/dir2/dir3/file.exe'
name = os.path.basename(path)
print name
4 голосов
/ 02 ноября 2009

вам лучше использовать стандартную библиотеку для этого:

>>> tmppath = '/dir1/dir2/dir3/file.exe'
>>> import os.path
>>> os.path.basename(tmppath)
'file.exe'
2 голосов
/ 02 ноября 2009

Использовать os.path.basename (..) function.

1 голос
/ 02 ноября 2009
>>> import os
>>> path = '/dir1/dir2/dir3/file.exe'
>>> path.split(os.sep)
['', 'dir1', 'dir2', 'dir3', 'file.exe']
>>> path.split(os.sep)[-1]
'file.exe'
>>>
0 голосов
/ 02 ноября 2009

Существующие ответы верны для вашего "реального основного вопроса" (манипулирование путем). Что касается вопроса в заголовке (который можно обобщить для других символов), то в чем помогает метод строк rsplit:

>>> s='some/stuff/with/many/slashes'
>>> s.rsplit('/', 1)
['some/stuff/with/many', 'slashes']
>>> s.rsplit('/', 1)[1]
'slashes'
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...