from subprocess import call
import os
def consistence(sourcedir, destinationdir):
sr = set(os.listdir(sourcedir))
de = set(os.listdir(destinationdir))
os.chdir(sourcedir)
for i in sr.difference(de):
call(('rm', '-rf', i))
for i in sr.intersection(de):
if os.path.isdir(i):
consist(sourcedir + '/' + i, destinationdir + '/' + i)
for i in de.difference(sr):
call(('cp', '-r', destinationdir + '/' + i, sourcedir))
我想将两个目录更新,但是两个目录下的相同目录就不行,不能更新共有目录下的文件
1 回答
![?](http://img1.sycdn.imooc.com/5458620000018a2602200220-100-100.jpg)
慕无忌1623718
TA贡献1744条经验 获得超4个赞
#!/usr/bin/env python
from subprocess import call
import os
import sys
def consistency(sourcedir, destinationdir):
sourcedir = unicode(sourcedir)
destinationdir = unicode(destinationdir)
sr = set(os.listdir(sourcedir))
de = set(os.listdir(destinationdir))
if not sr and not de:
return
os.chdir(sourcedir)
for i in sr.difference(de):
call(('rm', '-rf', i))
for i in sr.intersection(de):
if os.path.isdir(sourcedir + '/' + i) and os.path.isdir(destinationdir + '/' + i):
consistency(sourcedir + '/' + i, destinationdir + '/' + i)
for i in de.difference(sr):
call(('cp', '-r', destinationdir + '/' + i, sourcedir))
def main():
if len(sys.argv) > 3:
print "Error: at most 3 arguments"
print "Usage: consistency(source, destination)"
return 1
sourcedir = sys.argv[1]
destinationdir = sys.argv[2]
consistency(os.path.abspath(sourcedir), os.path.abspath(destinationdir))
if __name__ == '__main__':
main()
搞掂
添加回答
举报
0/150
提交
取消