如何在python中用不同的字符从路径中分割出文件名?

时间:2017-06-25 04:56:21

标签: python

有:

我使用glob.glob()函数获得了绝对路径+文件名列表。但是,我尝试使用拆分功能来提取我的文件名,但我找不到最好的方法。例如:

我列表中的第一项是:'C:\ Users \ xxxxx \ Desktop \ Python Training \ Python Training-Home \ Practices \ Image Assembly \ bird_01.png'。有几个图像,如bird_02.png ...等。我成功调整了它们的大小,并尝试将它们重新保存在不同的位置。请参阅下面的部分代码。我的问题陈述是我找不到在我的代码中提取“image_filename”的方法。我只需要像bird_01,bird_02 ......等等。请帮我。提前谢谢。

if not os.path.exists(output_dir):
os.mkdir(output_dir)
for image_file in all_image_files:
    print 'Processing', image_file, '...'
    img = Image.open(image_file)
    width, height =  img.size
    percent = float((float(basewidth)/float(width)))
    hresize = int(float(height) * float(percent))
    if width != basewidth:
        img = img.resize((basewidth, hresize), Image.ANTIALIAS) 
    image_filename = image_file.split('_')[0]
    image_filename = output_dir + '/' + image_filename
    print 'Save to ' + image_filename
    img.save(image_filename) 

2 个答案:

答案 0 :(得分:2)

您可以使用os.path.split功能提取路径的最后部分:

>>> import os
>>> _, tail = os.path.split("/tmp/d/file.dat") 
>>> tail
'file.dat'

如果您只想要没有扩展名的文件名,可以使用os.path.splitext安全地执行此操作:

>>> os.path.splitext(tail)[0]
'file'

答案 1 :(得分:1)

为了在没有目录的情况下提取文件名,请使用os.path.basename()

>>> path = r'c:\dir1\dir2\file_01.png'
>>> os.path.basename(path)
'file_01.png'

在您的情况下,您可能还想使用rsplit代替split并限制为一次拆分:

>>> name = 'this_name_01.png'
>>> name.split('_')
['this', 'name', '01.png']
>>> name.rsplit('_', 1)
['this_name', '01.png']