J'ai un outil python pour 'toucher' (utime) un fichier, puis passer à un autre dossier. Toutefois, si le fichier existe déjà dans le dossier de destination, il est écrasé en mode silencieux. Je voudrais vérifier un fichier du même nom dans le dossier de destination et, s'il existe, renommer celui que je déplace à son nom plus '- n' à la fin, où n est un nombre commençant à '1' et, si le fichier avec '-1' à la fin existe déjà, '-2' etc.
Par exemple, disons dans le dossier source est un fichier 'foo.txt', mais il y en a un ' foo.txt 'dans le dossier de destination. Cette fonction devrait retourner '(chemin absolu)/foo -1 .txt'. Donc, j'ai fait une fonction pour vérifier ces circonstances et retourner la chaîne modifiée, donc je peux utiliser le renommer plus tard et ne pas écraser. Cependant, actuellement, si le fichier existe, il ne renvoie rien. Voici le code de la fonction, en supposant ces variables:La fonction python ne se répète pas
fileName - chemin d'accès en entrée, chemin absolu. par exemple. /Users/foo/sourceFolder/bar.txt
index - variable itérateur, fixé à « 1 » au début de chaque fichier en cours d'ouverture (à l'extérieur de la fonction)
def checkExists(fileName):
global index
print "checkExists(" + fileName + ")"
if exists(fileName):
splitPath = split(newFile)
splitName = splitext(splitPath[1])
newSplitName = splitName[0] + "-" + str(index)
index += 1
newName = splitPath[0] + "/" + newSplitName + splitName[1]
print "newName = " + newName
else:
print "(else) fileName = " + fileName
print "(else) fileName = " + str(type(fileName))
print ""
return fileName
checkExists(newName)
Or, il semble que l'intérieur appel pour checkExists() à la fin ne fonctionne pas.
J'espère avoir été clair dans mon explication.
IAmThePiGuy
P.S. Je ne veux pas entendre parler de problèmes de course potentiels avec utime, je sais que les fichiers dans le répertoire source ne seront pas accessibles par quelque chose d'autre.
Vérifiez votre empreinte. –