В скрипте Python я создаю выходной файл.
Я хочу, чтобы его имя изменилось в соответствии с его старыми версиями в выходной папке.
Например:
output_file_name = 'output.txt'
if output.txt already exists --> output_file_name = output_(2).txt
if output_(2).txt already exists --> output_file_name = output_(3).txt
...
Мое испытание:
import os.path
def check_versions(last_version_filename):
# if an output_file_name_(n).txt is present then
# return output_file_name(n+1).txt
#extract the version of the file inside the output folder
try:
old_version = last_version_filename.split('(')[1].split(')')[0]
# case in which no output_(n).txt version are present
except IndexError:
old_version = 1
if old_version == 1:
to_be_replaced = '.txt'
else:
to_be_replaced = '_({}).txt'.format(old_version)
new_version = int(old_version) + 1
last_version_filename = last_version_filename.replace(to_be_replaced,'_({}).txt'.format(new_version))
OUTPUT_FILE_NAME = 'output.txt'
# if output.txt file already exists, then we need to modify its name
if os.path.isfile('./' + OUTPUT_FILE_NAME):
# last_file_version is the name of the last version file in the folder
OUTPUT_FILE_NAME = check_versions(last_version_filename)
Так как я могу проверить последнюю версию файла в папке? Учтите, что его формат всегда будет output_(n).txt
. Таким образом, наибольшее значение n
определяет последнюю версию файла.
Кроме того, основная ошибка этого кода в том, что он работает нормально, если
output.txt
output_(2).txt
.
.
.
output_(n).txt
ВСЕ присутствуют. Но если output.txt
отсутствует, код создаст output.txt
в качестве выходного файла последней версии. Таким образом, у вас будет output.txt
, что новее, чем output_(2).txt
. И это может привести к сложностям.
Опять же, ясно, что мне нужно знать, какая версия является последней, а затем соответствующим образом назвать выходной файл.
Как бы вы решили это?