为了账号安全,请及时绑定邮箱和手机立即绑定

python目录更新

python目录更新

慕运维8079593 2019-02-24 17:23:33
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 回答

?
慕无忌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()

搞掂

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 424 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信