Python copie les fichiers dans un nouveau répertoire et les renommer si le nom du fichier existe déjà

J'ai déjà lu ce fil mais quand je la mettre en application dans mon code il ne fonctionne que pour quelques itérations.

Je suis à l'aide de python pour parcourir un répertoire (appelons cela déplacer le répertoire) pour copier principalement des fichiers pdf (correspondant à un ID unique) dans un autre répertoire (répertoire de base) pour le dossier correspondant (correspondant à l'IDENTIFIANT unique). J'ai commencé à utiliser shutil.copy mais si il y a des doublons, il écrase le fichier existant.

Je voudrais être en mesure de rechercher le dossier correspondant à voir si le fichier existe déjà, et de manière itérative nom si plus d'un produit.

par exemple

  • de copier le fichier 1234.pdf dans un dossier dans le répertoire de base, 1234.
  • si 1234.pdf existe un nom 1234_1.pdf,
  • si un autre pdf est copié comme 1234.pdf alors il serait 1234_2.pdf.

Voici mon code:

import arcpy
import os
import re
import sys
import traceback
import collections
import shutil

movdir = r"C:\Scans"
basedir = r"C:\Links"

try:
    #Walk through all files in the directory that contains the files to copy
    for root, dirs, files in os.walk(movdir):
        for filename in files:
            #find the name location and name of files
            path = os.path.join(root, filename)
            print path
            #file name and extension
            ARN, extension = os.path.splitext(filename)
            print ARN

            #Location of the corresponding folder in the new directory
            link = os.path.join(basedir,ARN)

            # if the folder already exists in new directory
            if os.path.exists(link):

                #this is the file location in the new directory
                file = os.path.join(basedir, ARN, ARN)
                linkfn = os.path.join(basedir, ARN, filename)

                if os.path.exists(linkfn):
                    i = 0
                    #if this file already exists in the folder
                    print "Path exists already"
                    while os.path.exists(file + "_" + str(i) + extension):
                        i+=1
                    print "Already 2x exists..."
                    print "Renaming"
                    shutil.copy(path, file + "_" + str(i) + extension)
                else:

                    shutil.copy(path, link)
                    print ARN + " " +  "Copied"
            else:
                print ARN + " " + "Not Found"

source d'informationauteur GISKid