比较不同文件夹中的两个文件名

时间:2015-08-06 12:22:42

标签: python string split

我在不同位置有两个文件:/tmp/helpers_image.tif/tmp/outputs/helpers_image.qml。我想在扩展名之前比较他们的名字。

如何比较这两个文件夹中的文件?

如果这些文件位于我可以使用的文件夹中:

t1 = 'helpers_image.qml'
t1_list= t1.split('.') 
t1_list[0] == t2_list[0]

...假设其他列表将被称为t2

2 个答案:

答案 0 :(得分:4)

您应该使用os.path.basename函数获取文件的名称,无论它们位于哪个文件夹中。你走了:

import os

filename1 = os.path.basename('/tmp/helpers_image.tif')  # returns 'helpers_image.tif'
filename2 = os.path.basename('/tmp/outputs/helpers_image.qml') # return 'helpers_image.qml'

# Thanks to Cyrbil for noticing a bug here
name1 = filename1.rsplit('.', 1)[0]  # returns 'helpers_image'
name2 = filename2.rsplit('.', 1)[0]  # return 'helpers_image'

if name1 == name2:  # This is True for this exact case
    # your logic here

另一种方式是suggested by Dunes

name1 = os.path.basename(os.path.splitext('/tmp/helpers_image.tif')[0])
name2 = os.path.basename(os.path.splitext('/tmp/outputs/helpers_image.qml')[0])

答案 1 :(得分:2)

除此之外,如果您发现需要匹配多个文件名,则可以使用集。

files1 = ['helpers_image1.qml', 'helpers_image2.qml', 'helpers_image3.qml', 'helpers_imag4.qml']
files2 = ['helpers_image2.qml', 'helpers_image3.qml']
print set(files1).intersection( set(files2) )

输出:

  

set(['helpers_image3.qml','helpers_image2.qml'])