首页 > 解决方案 > python备份脚本使用shutil复制树的路径长度问题

问题描述

当我遇到很长的路径时,我的脚本有问题。它引发了一个错误。有没有办法绕过这个错误?这是我的代码`

import os
import sys
import filecmp
import shutil

source = "C:/Users/Omar/Documents/Welo - copy/"
dest = "C:/Users/Omar/Documents/Welo/"



def back_up(dircmpp):

    for name in dircmpp.diff_files:

    print("copying {} from {} to {} ".format(name, dircmpp.left, dircmpp.right))
    shutil.copyfile(dircmpp.left + "/{}".format(name), dircmpp.right + "/{}".format(name))
    
    for name in dircmpp.left_only:
    
        if os.path.isdir(dircmpp.left+"/{}".format(name)):
        
        print("copying tree" , "{}{} \n".format(dircmpp.right,name))
        shutil.copytree("{}/{}".format(dircmpp.left, name), "{}/{}".format(dircmpp.right,name))
        else:
        
        shutil.copyfile(dircmpp.left+"/{}".format(name), dircmpp.right+"/{}".format(name))
        
    for name in dircmpp.subdirs.values():
        print(name.left, " -- " , name.right)
        newdir = filecmp.dircmp(name.left,name.right)
        back_up(newdir)
    
        
thedir = filecmp.dircmp(source, dest)
back_up(thedir)

我测试了脚本,只要路径短< 250,它就可以工作,但是当它变长时,我得到一个找不到目标的错误

`

Error: [('C:/Users/Omar/Documents/Welo - copy/test1\\test2\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\d2\\d3\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt', 'C:/Users/Omar/Documents/Welo/test1\\test2\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\d2\\d3\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt', "[Errno 2] No such file or directory: 'C:/Users/Omar/Documents/Welo - copy/test1\\\\test2\\\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\\\d2\\\\d3\\\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt'"), ('C:/Users/Omar/Documents/Welo - copy/test1\\test2\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\d2\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt', 'C:/Users/Omar/Documents/Welo/test1\\test2\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\d2\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt', "[Errno 2] No such file or directory: 'C:/Users/Omar/Documents/Welo - copy/test1\\\\test2\\\\asjkhdkajshdkjahdskjhasdjhakjdshakjshdkjashdkjahsdkjhaskjdhaksjdhkajhdkahsdjhaskjdhkashdk\\\\sjkahdkjashdkjahdjkahdkjhajkshdkjashdkjahsdkjahdkjhakdjahkdjhaskdhjashkdjasjshd/d0\\\\d2\\\\jsjsjdjdjdjfjfjfjjffjjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjfjf - Copy.txt'")]

`

标签: pythonshutil

解决方案


推荐阅读