我想比较两个zip文件夹的文件。 仅当大小更大时才复制当末尾已经有一个zip时如果缺少相等的名称,则复制文件。 只比较名称而不是日期:es-->;Campobasso[CB]-Molise
文件夹DirTemp ZIP: 坎波巴索[CB]-Molise_uuu02-02-2016.zip
文件夹DirArc ZIP: Foggia[FG]-Puglia\ u 22-01-2016.zip 罗马[RM]-Lazio\ U 20-01-2016.zip
文件夹dirarccartati, 它们是一个zip文件,如果找到了并且更小,就放在另一个文件夹中
这是我的代码,但工作部分,我不能复制文件(如果不存在)的末尾控制,与列表。你知道吗
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os,glob,shutil
DirTemp = "/var/www/vhosts/anon_ftp/incoming/"
DirArc = "/var/www/vhosts/settings/BackupDTT/"
DirArcScartati = "/var/www/vhosts/settings/BackupDTT_scartati/"
ExtFile = ".zip"
def ControlFile():
# Controllo i nuovi file zip
listnew=[]
#print "Avvio copia"
for name in glob.glob(DirTemp + "*" + ExtFile):
listnew.append((name.replace(DirTemp,"").replace(ExtFile,"").split("__")[0],name))
#print "Nome: "+ str(listnew)
for oldname in glob.glob(DirArc + "*" + ExtFile):
#print "Setting Esistente: "+oldname
namesplit = oldname.replace(DirArc,"").replace(ExtFile,"").split("__")[0]
for newname in listnew:
#print "New Nome: "+str(newname[0])
print namesplit
if namesplit == newname[0]:
if os.path.getsize(newname[1]) >= os.path.getsize(oldname):
print ("trasferire file" + newname[1] + " >>> " + oldname)
shutil.copy2(newname[1],DirArc)
os.remove(oldname)
#os.remove(newname[1])
break
elif os.path.getsize(newname[1]) <= os.path.getsize(oldname):
print ("File più piccolo---\nFileNuovo: " + str(os.path.getsize(newname[1])) + " FileVecchio: " + str(os.path.getsize(oldname)))
shutil.copy2(newname[1],DirArcScartati)
#os.remove(newname[1])
break
else:
for newname in listnew:
print ("Nuova città trasferisco il file: " + newname[1])
shutil.copy2(newname[1],DirArc)
#os.remove(newname[1])
break
ControlFile()
以下方法可能更容易遵循:
它首先创建包含传入文件夹和存档文件夹中所有条目的字典。然后它遍历传入的字典以查看条目是否在存档中。如果是,则检查两个大小,如果不是,则复制新条目。你知道吗
字典以键为基本名称(不含日期)存储,值为完整路径名和文件大小。你知道吗
相关问题 更多 >
编程相关推荐