9

如何在结果中仅列出目录中的文件名而没有目录信息?我试过

for file in glob.glob(dir+filetype):
    print file

给我结果 /path_name/1.log,/path_name/2.log,.... ,但我只需要文件名:1.log,2.log等。我不需要结果中的目录信息。有没有一种简单的方法来摆脱路径信息?我不想在结果上加上一些 substr。谢谢!

4

3 回答 3

26

os.path.basename

返回 pathname 的基本名称pathpath这是通过传递给函数返回的对的第二个元素split()。注意这个函数的结果与Unixbasename程序不同;其中basename对于 '/foo/bar/' 返回 'bar',该basename()函数返回一个空字符串 ('')。

所以:

>>> os.path.basename('/path_name/1.log,/path_name/2.log')
'2.log'
于 2013-04-18T18:43:09.567 回答
3
import os

# Do not use 'dir' as a variable name, as it's a built-in function
directory = "path"
filetype  = "*.log"

# ['foo.log', 'bar.log']
[f for f in os.listdir(directory) if f.endswith(filetype[1:])]
于 2013-04-18T18:44:19.223 回答
1

你可以做

import os
[file.rsplit(os.path.sep, 1)[1] for file in glob.glob(dir+filetype)]
于 2013-04-18T18:41:01.537 回答