【python对比目录】对比AB目录判断修改的文件,将A修改的文件同步到B

import shutil 
import os 
import time 
import json 
import datetime 
A_dir='/media/B/01-workspace/spaDev_v5/bps3.0' 
B_dir='/media/B/01-workspace/spaDev_v5/bps3.0_2' 
FILE_INFO_JSON="/media/B/01-workspace/modifyTime.json" 
class count(object):     
num=0 
class fileMtime(object):     
data={}      
def checkAndSysnc(path1,path2):         
 path1 = path1 + "/"     
 path2 = path2 + "/"         
first_dir_list1 = os.listdir(path1)     
file_list   =[]     
folder_list =[]          
#get file and folder list     
for file in first_dir_list1:         
if os.path.isfile(path1 + file):            
 file_list.append(file);         
elif 
os.path.isdir(path1 + file):             
folder_list.append(file)        
 #elif                        
for file in file_list:        
 if  file.endswith((".h",".cpp",".sh",".c",".hpp")):#only check those type file             
file_info1   = os.stat(os.path.join(path1,file))             
filename_key = os.path.join(path1,file)                                
if filename_key in fileMtime.data.keys():                 
last_modify_time  = fileMtime.data[os.path.join(path1,file)]#get last modify time frome json             
else:                 
last_modify_time  = 0                 
print("%s not in fileMtime.data "%(filename_key))                              
if last_modify_time != file_info1.st_mtime:                 
fileMtime.data[filename_key]=file_info1.st_mtime                 
shutil.copyfile(os.path.join(path1,file), os.path.join(path2,file))                 
#print("file %s %s is modify"%(path1,file))                 
count.num+=1                                       
for file in folder_list:             
checkAndSysnc(os.path.join(path1,file),os.path.join(path2,file))              
if __name__=='__main__':     
starttime = datetime.datetime.now()         
 if os.path.exists(FILE_INFO_JSON):         
print("%s exist."%(FILE_INFO_JSON))         
with open(FILE_INFO_JSON,"r") as f:             
fileMtime.data = json.load(f)     
else:         
print("%s not exist."%(FILE_INFO_JSON))        
 checkAndSysnc(A_dir,B_dir)     
with open(FILE_INFO_JSON,"w") as f:         
json.dump(fileMtime.data,f)          
endtime = datetime.datetime.now()     
seconds  = (endtime - starttime).seconds       
 m, s = divmod(seconds, 60)     
h, m = divmod(m, 60)          
print("%d file is change,%d:%02d:%02d" % (count.num,h, m, s))  
     
import shutil import os import time import json class lei(object):      count=0; class fileMtime(object):     data={}      def file_listen(path1,path2):          path1 = path1 + "/"     path2 = path2 + "/"     #print("dirs %s"%(path1))     first_dir_list1 = os.listdir(path1)     #first_dir_list2 = os.listdir(path2)          #print("the path( "+ path,"):",first_dir_list)     #print("exist file:", files)     #new_file = [file for file in first_dir_list1 if os.path.isfile(path1 + file)]     file_list =[]     folder_list =[]          for file in first_dir_list1:         if os.path.isfile(path1 + file):             file_list.append(file);         elif os.path.isdir(path1 + file):             folder_list.append(file)         #elif 链接……                  for file in file_list:         if  file.endswith((".h",".cpp",".sh",".c",".hpp")):#过滤 只处理列出的类型             info1     = os.stat(os.path.join(path1,file))             #info2 = os.stat(os.path.join(path2,file))             st_mtime  = fileMtime.data[os.path.join(path1,file)]             #if info2.st_mtime != info1.st_mtime:#判断最后修改时间             if st_mtime != info1.st_mtime:#判断最后修改时间                                  fileMtime.data[os.path.join(path1,file)]=info1.st_mtime                 shutil.copyfile(os.path.join(path1,file), os.path.join(path2,file))                 print("file %s %s is modify"%(path1,file))                 lei.count+=1                      for file in folder_list:             #print("dirs %s%s"%(path1,file))             file_listen(os.path.join(path1,file),os.path.join(path2,file))     #print("file num is:%d"%(lei.count)) import shutil import os def file_listen(path1,path2):     path1 = path1 + "/"     path2 = path2 + "/"     print("dirs %s"%(path1))     first_dir_list1 = os.listdir(path1)     #first_dir_list2 = os.listdir(path2)          #print("the path( "+ path,"):",first_dir_list)     #print("exist file:", files)     #new_file = [file for file in first_dir_list1 if os.path.isfile(path1 + file)]     file_list =[]     folder_list =[]          for file in first_dir_list1:         if os.path.isfile(path1 + file):             file_list.append(file);         elif os.path.isdir(path1 + file):             folder_list.append(file)         #elif 链接……                  for file in file_list:         if  file.endswith((".h",".cpp",".sh",".c",".hpp")):#过滤 只处理列出的类型             info1 = os.stat(os.path.join(path1,file))             info2 = os.stat(os.path.join(path2,file))             if info2.st_mtime != info1.st_mtime:#判断最后修改时间                 shutil.copyfile(os.path.join(path1,file), os.path.join(path2,file))                 print("file %s %s is modify"%(path1,file))     for file in folder_list:             print("dirs %s%s"%(path1,file))             file_listen(os.path.join(path1,file),os.path.join(path2,file))

 

按后缀筛选文件

  1. #元组案例

  2. file = "python.txt" if file.endswith("txt"): print("该文件是文本文件") elif file.endswith((".AVI",".WMV",".RM")): print("该文件为视频文件") else:

     

 

posted on 2022-10-04 01:27  bdy  阅读(13)  评论(0编辑  收藏  举报

导航