我正在编写一个脚本来备份从一个目录(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)
谁能告诉我我哪里做错了? 感谢
答案 0 :(得分:3)
抱歉,但文档没有说明。这是full documentation for the function:
的复制品
shutil.copyfile(src, dst)
复制 文件的内容(无元数据) 将
src
命名为名为dst
的文件。dst
必须是完整的目标文件名; 查看copy()
以获取接受的副本 目标目录路径。如果src
和dst
是相同的文件,Error
是 提高。目的地位置必须 是可写的;否则,IOError
异常将被提出。如果dst
已经存在,它将被替换。 特殊文件,如字符或 块设备和管道不能 使用此功能复制。src
和dst
是以字符串形式给出的路径名。
所以你必须自己创建目录。