向后读字符串并在第一个'/'处终止

时间:2009-11-02 08:42:14

标签: python path

我想只提取路径的文件名部分。我的代码可以使用,但我想知道这样做的更好(pythonic)方法是什么。

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 个答案:

答案 0 :(得分:12)

尝试:

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

答案 1 :(得分:4)

你最好使用标准库:

>>> tmppath = '/dir1/dir2/dir3/file.exe'
>>> import os.path
>>> os.path.basename(tmppath)
'file.exe'

答案 2 :(得分:2)

使用os.path.basename(..)功能。

答案 3 :(得分: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'
>>>

答案 4 :(得分:0)

现有答案对于您的“真实基础问题”(路径操纵)是正确的。对于标题中的问题(当然可以推广到其他字符),有什么有助于rsplit字符串方法:

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