2011-07-21 109 views
1

我正在使用os.walk來比較兩個文件夾,並查看它們是否包含完全相同的文件。但是,這隻會檢查文件名稱。我想確保文件大小是相同的,如果他們不同的報告回來。你能從os.walk獲得文件大小嗎?在os.walk中獲取文件大小

+0

請注意,文件大小相等並不能保證文件是相同的;您可能需要使用difflib模塊或計算校驗和。 (唉,python網站目前沒有迴應我,所以我不能提供網址。)這就是說,對於文件大小看到這個以前的問題:http://stackoverflow.com/questions/2104080/how- python – GreenMatt

回答

5

以相同的方式獲取文件大小而不使用os.walk,與os.stat。你只需要記住與根的加盟:

for root, dirs, files in os.walk(some_directory): 
    for fn in files: 
     path = os.path.join(root, fn) 
     size = os.stat(path).st_size # in bytes 

     # ... 
2

os.path.getsize(路徑)可以給你的文件的文件大小,但有兩個文件相同的大小並不總是意味着它們是相同的。你可以讀取文件的內容,並有一個MD5或哈希值來比較。

+0

文件大小不相等是一個很好的保證,即文件不相同,但是。 – Vatine

+0

如果您不擔心人們故意僞造該文件相同,則校驗和算法比MD5快得多。如果不想打開文件,查看文件的上次修改時間也是確認相同大小的文件相同的好方法。 – agf

1

正如其他人所說:您可以通過stat獲取尺寸。但是,爲了比較兩個dirs,您可以使用dircmp