备份文件脚本

时间:2011-04-09 12:12:37

标签: python backup

我正在编写一个脚本来备份从一个目录(Master)到另一个目录(Clone)的文件。 该脚本将监视这两个目录。

如果缺少克隆内的文件,则脚本会将丢失的文件从Master复制到 Clone.Now我在创建丢失文件夹时遇到问题。

我已阅读文档,发现shutil.copyfile会创建一个目录 dir不存在。但是我收到一条显示目标目录的IOError消息 不存在。下面是代码。

import os,shutil,hashlib
master="C:\Users\Will Yan\Desktop\Master"
client="D:\Clone"

if(os.path.exists(client)):
    print "PATH EXISTS"  
else:
    print "PATH Doesn't exists copying"
    shutil.copytree(master,client)
def walkLocation(location,option):
    aList = []
    for(path,dirs,files) in os.walk(location):
        for i in files:
            if option == "path":
                aList.append(path+"/"+i)
            else:
                aList.append(i)
    return aList

def getPaths(location):
    paths=[]
    files=[]
    result =[]
    paths = walkLocation(location,'path')
    files = walkLocation(location,'files')
    result.append(paths)
    result.append(files)
    return result
ma=walkLocation(master,"path")
cl=walkLocation(client,"path")
maf=walkLocation(master,"a")
clf=walkLocation(client,"a")
for i in range(len(ma)):
    count = 0
    for j in range(len(cl)):
       if maf[i]==clf[j]:
           break
       else:
           count= count+1
    if count==len(cl):
        dirStep1=ma[i][ma[i].find("Master")::]
        dirStep2=dirStep1.replace("Master",client)
        shutil.copyfile(ma[i],dirStep2)

谁能告诉我我哪里做错了? 感谢

1 个答案:

答案 0 :(得分:3)

抱歉,但文档没有说明。这是full documentation for the function

的复制品
  

shutil.copyfile(src, dst)

     

复制   文件的内容(无元数据)   将src命名为名为dst的文件。 dst   必须是完整的目标文件名;   查看copy()以获取接受的副本   目标目录路径。如果src和   dst是相同的文件,Error是   提高。目的地位置必须   是可写的;否则,IOError   异常将被提出。如果dst   已经存在,它将被替换。   特殊文件,如字符或   块设备和管道不能   使用此功能复制。 srcdst   是以字符串形式给出的路径名。

所以你必须自己创建目录。