Skip to content

Instantly share code, notes, and snippets.

Created November 13, 2014 07:51
Show Gist options
  • Select an option

  • Save anonymous/b6874d62b66e518e463e to your computer and use it in GitHub Desktop.

Select an option

Save anonymous/b6874d62b66e518e463e to your computer and use it in GitHub Desktop.
if form.is_valid():
original_name, extension = os.path.splitext(form.cleaned_data['file'].name) # расширение файла из формы
path = os.path.join(settings.MEDIA_ROOT, DIR)
file_name = image_name_resolver(path) # принимает путь, отдаёт верное имя(без расширения) для файла
complete_name = file_name + extension
...
def image_name_resolver(path):
'''
Возвращает имя для файла в виде цифры. Если в данной папке уже есть файлы с цифрами,
то будет выдано имя большее на единицу от самого большего числа. Если чисел нет то
будет возвращена единица.
:param path: Путь к директории, куда будет сохранен файл с расчитанным здесь именем
:return: Имя для файла
'''
file_list = os.listdir(path) # сделать список файлов в этой папке
numbers_list = []
for item in file_list:
name, ext = os.path.splitext(item)
if name.isdigit():
numbers_list.append(name)
numbers_list.sort(reverse=True)
if len(numbers_list): # Если список не пуст
last_number = numbers_list[0] # Последний элемент == самый большой
file_name = str(int(last_number) + 1) # имя нашего файла = 1 + последний элемент
else:
file_name = str(1)
return file_name
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment