2009-11-02 1 views
3

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

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

вопрос плохо сформулирован, должен быть «Как извлечь имя файла из пути. " – Kurt

+1

Какую книгу или учебник вы используете для изучения Python? –

ответ

12

Try:

#!/usr/bin/python 
import os.path 
path = '/dir1/dir2/dir3/file.exe' 
name = os.path.basename(path) 
print name 
+0

хороший - много thx! – zyrus001

+0

Добро пожаловать zyrus001. –

4

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

>>> tmppath = '/dir1/dir2/dir3/file.exe' 
>>> import os.path 
>>> os.path.basename(tmppath) 
'file.exe' 
1
>>> 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

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

>>> s='some/stuff/with/many/slashes' 
>>> s.rsplit('/', 1) 
['some/stuff/with/many', 'slashes'] 
>>> s.rsplit('/', 1)[1] 
'slashes' 
>>> 
+0

или 'rpartition', конечно – SilentGhost

Смежные вопросы