Подскажите как правильно сделать проверку и подмену файла при загрузке.
Используеться Django. В поле filefield загружаеться файл в фомате JSON, который должен содержать массив чисел.
Содержимое файла проверяеться на соответсвие и форматируеться. Как записать уже отформатированные данные в файл вместо старых и сохранить. Либо создать новый файл с отформатированными данными и заменить им полученный из запроса.
Делаю проверку в методе clean поля.
def clean_data(self): import numpy as np MAX_FILE_SIZE = 200 * 1024 * 1024 file = self.cleaned_data['data'] file_size = file.size if file_size > MAX_FILE_SIZE: raise forms.ValidationError("Very large file") raw_data = file.read().decode('utf-8') # json_2d_array_of_int32 = np.fromstring(raw_data) try: json_data = json.loads(raw_data) except (TypeError, ValueError): raise forms.ValidationError("Incorrect JSON format") else: json_2d_array_of_int32 = np.array(json_data) json_data = None data_dtype = json_2d_array_of_int32.dtype data_shape = json_2d_array_of_int32.shape datacorrect = ( ( data_dtype == np.dtype('int32') or data_dtype == np.dtype('float64') ) and len(data_shape) == 2 ) if not datacorrect: raise forms.ValidationError("Incorrect data format!" "Try file with JSON array_of_arrays-like structure") # Как тут правильно сделать подмену. # outfile = TemporaryFile() np.save('temp_json', json_2d_array_of_int32) # print(type(np.array2string(json_2d_array_of_int32))) print(np.array_str(json_2d_array_of_int32)[1:-1]) return file
Рассматриваю даже вариант сохранения в специальном формате numpy.