У меня есть инструмент python, чтобы «коснуться» (utime) файла, а затем переместить в другую папку. Однако, если файл уже существует в папке назначения, он автоматически перезаписывается. Я хотел бы проверить файл с таким же именем в папке назначения и, если он существует, переименовать тот, который я перемещаю, в его имя плюс '- n ' в конце, где n - это число, начинающееся с «1», а если файл с «-1» в конце уже существует, «-2» и т. д.
Например, скажем, в исходной папке есть файл 'foo.txt', но в целевой папке также есть один 'foo.txt'. Эта функция должна возвращать '(абсолютный путь) /foo-1.txt'.
Итак, я сделал функцию для проверки этих обстоятельств и возврата измененной строки, чтобы я мог позже использовать переименование и не перезаписывать. Однако в настоящее время, если файл существует, он ничего не возвращает. Ниже приведен код функции, при условии, что эти переменные:
fileName - входной путь к файлу, абсолютный путь. например /Users/foo/sourceFolder/bar.txt
index - переменная итератора, установленная в '1' в начале каждого открываемого файла (внешне для функции)
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)
Теперь кажется, что внутренний вызов для checkExists () в конце не выполняется.
Надеюсь, я ясно объяснил.
IAmThePiGuy
P.S. Я не хочу слышать о потенциальных проблемах гонки с utime, я знаю, что файлы в исходном каталоге больше не будут доступны.