我在不同位置有两个文件:/tmp/helpers_image.tif
和/tmp/outputs/helpers_image.qml
。我想在扩展名之前比较他们的名字。
如何比较这两个文件夹中的文件?
如果这些文件位于我可以使用的文件夹中:
t1 = 'helpers_image.qml'
t1_list= t1.split('.')
t1_list[0] == t2_list[0]
...假设其他列表将被称为t2
。
答案 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'])