Как правильно удалять и сохранять файлы изображений в python flask
Формируются 2 кортежа с именами файлов.
1 кортеж - имена файлов для удаления (получены из БД).
2 кортеж - имена файлов для сохранения (получены из формы).
Я пытаюсь так:
import os
old_name = (get_image_name.img_1, get_image_name.img_2, get_image_name.img_3)
new_name = (request.files['img_1'], request.files['img_2'], request.files['img_3'])
for i in range(3):
os.remove(os.path.join(app.config['UPLOAD_FOLDER'] + 'test_folder/', old_name[i]))
new_name[i].save(os.path.join(app.config['UPLOAD_FOLDER'] + 'test_folder/', new_name[i].filename))
В таком виде, если требуется удалить 2 файла и при этом сохранить 3 файла, то 3й файл не сохраняется.
Хотя если требуется удалить 2 файла и сохранить 2, или удалить 3 файла и сохранить 2, то перезапись происходит корректно.
Как сделать так, что бы удалялось и сохранялось любое количество файлов?
Ответы (1 шт):
Автор решения: Gnifajio
→ Ссылка
Для того, чтобы перезаписать файл в python, вам не нужно его удалять, а потом создавать заново.
with open('filename', 'w') as f:
f.write('This is new data, the old ones have been overwritten')
Если вам нужно перезаписать несколько файлов, то просто поместите конструкцию with в цикл for:
file_names = ('a.txt', 'b.txt', 'c.txt') # Кортеж с именами файлов
files_data = ( # Кортеж с данными
'data inside the file a.txt',
'data inside the file b.txt',
'data inside the file c.txt'
)
for name, data for zip(file_names, files_data):
with open(name, 'w') as f:
f.write(data)