有:
我使用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)
答案 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']