提问者:小点点

Python-从一个包含路径字符串的容器中删除,重复的文件名及其不同的路径


我需要删除文件列表(或集合)中的重复项,这些文件将被复制到Python中按日期创建的文件夹中。

我需要的是在起始列表中找到文件路径'/home/user/text.txt'的最后一部分中已经存在的重复项,然后从列表中删除整个路径,这样将被复制的文件起始列表(或集合)就没有文件系统中可能存在的重复项,并且在起始容器中表示的要复制的元素数量最终与目标文件夹中实际复制的文件数量相同。

我也试图通过sorted()key选项来达到这个目标:

set_path_filename_without_duplicates=已排序(set_path_filename,key=lambda x:x.split()[1])

然后得到错误indexerror:list index out of range

此刻我还不知道该怎么办,有人有主意吗? 非常感谢


共1个答案

匿名用户

所以如果我理解正确的话,你有一个很多文件的列表。 列表中的文件可能有重复的,但同样的文件也可能有很多地方?

如果是这样的话,下面的程序应该只返回每个唯一文件名的一个路径。

import os
list_of_filepaths=['root/dir/some_pic.jpeg',
               'root/dir/some_pic2.jpeg',
               'root/documents/budget.excl',
               'root/Music/audio.mp3',
               'root/dir/some_pic.jpeg',
               'root/otherfolder/some_pic.jpeg']

dict_of_files={os.path.basename(file):file for file in list_of_filepaths}
files=list(set(dict_of_files.keys()))
unique_files=[dict_of_files[file] for file in files]

In [16]: unique_files
Out[16]: 
['root/dir/some_pic2.jpeg',
 'root/documents/budget.excl',
 'root/Music/audio.mp3',
 'root/otherfolder/some_pic.jpeg']