向后读取字符串,并在开始处终止'/'

问题描述:

我想仅提取路径的文件名部分。我的代码在下面的工作,但我想知道这是什么更好(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 
+0

问题是措辞不当,应该是“我如何提取路径的文件名。 “ – Kurt 2009-11-02 08:52:05

+1

你用什么书或教程学习Python? – 2009-11-02 12:06:41

尝试:

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

优秀 - 很多thx! – zyrus001 2009-11-02 08:57:07

+0

不客气zyrus001。当然是 – 2009-11-02 09:25:20

你会更好使用标准库这样的:

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

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

>>> import os 
>>> path = '/dir1/dir2/dir3/file.exe' 
>>> path.split(os.sep) 
['', 'dir1', 'dir2', 'dir3', 'file.exe'] 
>>> path.split(os.sep)[-1] 
'file.exe' 
>>> 

现有答案对于“真正的潜在问题”(路径操作)是正确的。对于您的标题问题(推广到课程的其他字符),有什么可以帮助有串的rsplit方法:

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

或'rpartition' – SilentGhost 2009-11-02 18:41:20