检查多个文件是否相同

时间:2017-11-15 14:12:55

标签: python os.path

我有一个paths_list,假设它们是相同的。

In [96]: len(paths_list)
Out[96]: 191
In [97]: paths_list
Out[97]:
['~/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.CloudPhotosConfiguration/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.PressAndHold/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.iCal.CalendarNC/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.languageassetd/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.photos.VideoConversionService/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.iCal/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.share.Video.upload-Youku/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.QuickTimePlayerX/Data/Desktop/Dev/sample.py',
 '~/Library/Containers/com.apple.PassKit.PaymentAuthorizationUIExtension/Data/Desktop/Dev/sample.py',
 ...]

尝试使用set

进行检查
In [99]: { os.stat(i) for i in paths_list}
Out[99]: {os.stat_result(st_mode=33188, st_ino=8593437981, st_dev=16777220, 
st_nlink=1, st_uid=501, st_gid=20, st_size=554, st_atime=1510741689, 
st_mtime=1510453338, st_ctime=1510741688)}

返回的集合只包含一个项目,以断定它们是某些文件。

我了解到os.path.samefile每次检查两条路径。 如何使用os.path.samefile或其他优雅方法检查paths_list?

1 个答案:

答案 0 :(得分:2)

我对您的方法感到满意,os.path.samefile()检查两个文件的st_inost_dev,与您的方法基本相同,但如果您真的想使用samefile(),试试这个:

all(os.path.samefile(paths_list[i], paths_list[i+1])
    for i in range(len(paths_list)-1))

通过确保文件列表中文件的每个邻居对都通过True调用返回samefile(),您可以说它们都是同一个文件。

相关问题