-1
def copytree(src, dst, symlinks=False, ignore=None):
    for item in os.listdir(src):
        s = os.path.join(src, item)
        d = os.path.join(dst, item)
        if os.path.isdir(s):
            print "copying"
            shutil.copytree(s, d, symlinks, ignore=None)
        else:
            shutil.copy2(s, d)
def main ():
    #path to input
    src="/home/user/abcd"
    #here path to output
    dst="/home/user/dirtest"
    copytree(src,dst)

if __name__ == '__main__':
    main()

如果目标文件夹中的文件已经存在,如何复制它?较新的文件应重命名为类似 filename.x.ext。

例如-如果我尝试复制newfile.jpg并且它已经存在于文件夹中,它应该被复制为newfile.1.jpg. 如果newfile.1.jpg也已经存在,则应命名新文件newfile.2.jpg,依此类推

4

1 回答 1

2
def getUniqueName(destPath):
   d = destPath[:]
   count = 0
   while os.path.exists(d):
      count += 1 
      parts = os.path.splitext(d)
      d = "%s.%s%s"%(parts[0],count,parts[1])
   return d

我认为那会奏效

然后将其称为

shutil.copy2(s, getUniqueName(d))

当你这样做时不会有帮助shutil.copytree

于 2013-03-28T16:02:00.710 回答