2017-11-15 7 views
1

同じものと仮定して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)} 

でそれらをチェックしようとした返されたセットは、彼らはいくつかのファイルであることを結論する項目を1つだけ含まれています。

私はos.path.samefileが毎回2つのパスをチェックしていることを知ります。 os.path.samefileまたは他の優雅な方法でpaths_listを確認するにはどうすればよいですか?

答えて

2

私はあなたの方法、os.path.samefile()チェックst_inoと両方のファイルのst_dev、あなたの方法と本質的に同じでOKですが、あなたが本当にsamefile()を使用したい場合は、この試してみてください。すべての隣人を確認することにより、

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

をファイルリスト内のファイルのペアがTrueと返され、samefile()が呼び出された場合、それらはすべて同じファイルであると言えるでしょう。

関連する問題