2013-03-28 78 views
-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。Python。文件操作

例如,如果我嘗試複製newfile.jpg並且它已經存在於文件夾中,它應該被複製爲newfile.1.jpg。如果newfile.1.jpg也已經存在,新的文件應該被命名爲newfile.2.jpg

+1

首先,你明白那個代碼在做什麼? – Makoto

+2

@Makoto是的,我undestand – user2216451

回答

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

+1

d =「%s。%s%s」%(parts [0],count,parts [1])除非d =「%s。%d。%s」%部分[0],計數,部分[1])'%s。%d。%s' – catalesia

+0

部分包含[「/some/path/to/base_file_name",".ext」](所以它包括來自原來的例外) –

+0

errr例外=擴展.... –