找出資料夾中的相同檔案,並移動到指定資料夾中

2021-10-24 23:11:58 字數 2895 閱讀 9067

'''

找出資料夾中的相同檔案,並移動到指定資料夾中

'''import hashlib

import os,shutil

defmd5_vaule

(dir):

hasher = hashlib.md5(

) afile =

open

(dir

,'rb'

) buf = afile.read(

) a = hasher.update(buf)

return

str(hasher.hexdigest())

deffile_name

(file_dir)

:all=[

]for root, dirs, files in os.walk(file_dir)

: tmp =

# print('root_dir:', root) # 當前目錄路徑

# print('sub_dirs:', dirs) # 當前路徑下所有子目錄

# print('files:', files) # 當前路徑下所有非目錄子檔案

for i in files:

"\\"

+i)for j in tmp:

allreturn

alldef

need_del

(all_md5_in)

: all_md5_no_repeat =

list

(set

(all_md5_in)

) all_md5_no_repeat.sort(key=all_md5_in.index)

need_del_index =

for temp in all_md5_no_repeat:

flag =

0 list_index =

for n in

range

(all_md5_in.count(temp)):

sec = flag

flag = all_md5_in[flag:

].index(temp)

flag = list_index[-1

:][0

]+1for k in

range(1

,len

(list_index)):

)return need_del_index

defmove_file

(orgfile, newpath)

: shutil.move(orgfile, newpath)

defnew_folder_create

(in_del_folder, in_origl_folder)

:# 將重複檔案移動到指定資料夾,為防止出現檔名相同情況,後面會補上檔案原所在路徑

tmp1 = in_origl_folder.split(

".")

tmp2 = tmp1[-2

].split(

":")

res_path = in_del_folder + tmp2[-1

] os.makedirs(res_path)

return res_path

defall_file_and_md5

(filename, filemd5)

:# 顯示所有檔案及其對應的md5

for i in

range

(len

(filename)):

res=filename[i]

+" "

+filemd5[i]

print

(res)

defhow_much_repeat

(all_in)

:# 找出有多少相同的檔案

all_md5_set =

list

(set

(all_in)

) all_md5_set.sort(key = all_in.index)

# for k in all_md5_set:

# print(k)

return

len(all_in)

-len

(all_md5_set)

if __name__ ==

'__main__'

: file_names = file_name(

"d:\\重複"

)# 要處理的資料夾路徑

del_folder =

"d:\\重複del"

# 將重複的檔案拷到此路徑下,為防止出現檔名相同情況,後面會補上檔案原所在路徑

all_md5 =

file_names_beifen =

all_md5_beifen =

for i in file_names:))

# all_file_and_md5(file_names,all_md5) # 顯示所有檔案及其對應的md5

print

("有多少重複 "

, how_much_repeat(all_md5)

)# 找出有多少相同的檔案

need_del_file = need_del(all_md5)

# 找出需要刪除的檔案在原資料夾陣列中的位置(下標)

print

("重複檔案如下:"

)for j in need_del_file:

# 將重複的檔案移動到指定資料夾中

print

(file_names[j]

) new_folder = new_folder_create(del_folder, file_names[j]

) move_file(file_names[j]

, new_folder)

找出兩個資料夾中不同檔案,並另存

coding utf 8 import os from shutil import copy def main pdf path r d pdf file html path r d html file 遍歷兩個路徑下的檔案 其中.htm的檔案進行篩選,和pdf檔案內容進行檔名 不含.pdf和.ht...

Python列出資料夾中的檔案

幾乎所有的關於作業系統的內容可以在python 官方文件中找到 其中os.path被單獨列出 os.listdir path 可以列出path目錄中的檔名子資料夾 os.path.isfile 可以用來判斷是否是檔案。於是可以結合,用來只遍歷資料夾中的檔案 1 from os import list...

將檔案按照字尾名移動到不同的資料夾中

bin bash 定義需要檔案分類的目錄 source export home itms acs 1 data tab event script 定義將分類後檔案存放的目錄 local export home itms acs 1 data tab event script 11 獲取檔案字尾名之後...