python文件操作

python文件操作,python,Python,如果目标文件夹中的文件已经存在,如何复制该文件?较新的文件应重命名为类似filename.x.ext的文件 例如,如果我试图复制newfile.jpg,但它已经存在于文件夹中,则应将其复制为newfile.1.jpg。如果newfile.1.jpg也已存在,则新文件应命名为newfile.2.jpg,依此类推 def copytree(src, dst, symlinks=False, ignore=None): for item in os.listdir(src):

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

例如,如果我试图复制
newfile.jpg
,但它已经存在于文件夹中,则应将其复制为
newfile.1.jpg
。如果
newfile.1.jpg
也已存在,则新文件应命名为
newfile.2.jpg
,依此类推

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()
我想那会管用的

那就称它为

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.copytree时不会有帮助首先,你明白那代码在做什么吗?@Makoto是的,我不理解d=“%s.%s.%(部分[0],计数,部分[1])除非d=“%s.%d.%s%%(部分[0],计数,部分[1])
%s.%d.%s
部分包含[/some/path/to/base\u文件名],.ext(因此它包括原始异常中的点)
shutil.copy2(s, getUniqueName(d))