У меня есть два метода для записи бинарных файлов: первый работает с
данные, полученные сервером, соответствующие загрузке файла (т. е. обработке формы, чей enctype = "multipart / form-data"), а вторая работает с данными файла, отправленными в виде вложений электронной почты (т. е. данными файла, полученными путем анализа сообщения электронной почты тело сообщения с использованием get_payload ()).
Странно то, что они не являются взаимозаменяемыми: если я использую первый, чтобы сохранить данные, проанализированные из вложения электронной почты, произойдет сбой; аналогично, вторая функция завершается ошибкой при работе с данными загруженного файла.
Каковы критические различия?
Это первый метод:
def write_binary_file (folder, filename, f, chunk_size=4096):
"""Write the file data f to the folder and filename combination"""
result = False
if confirm_folder(folder):
try:
file_obj = open(os.path.join(folder, file_base_name(filename)), 'wb', chunk_size)
for file_chunk in read_buffer(f, chunk_size):
file_obj.write(file_chunk)
file_obj.close()
result = True
except (IOError):
print "file_utils.write_binary_file: could not write '%s' to '%s'" % (file_base_name(filename), folder)
return result
Это второй метод:
def write_binary_file (folder, filename, filedata):
"""Write the binary file data to the folder and filename combination"""
result = False
if confirm_folder(folder):
try:
file_obj = open(os.path.join(folder, file_base_name(filename)), 'wb')
file_obj.write(filedata)
file_obj.close()
result = True
except (IOError):
print "file_utils.write_binary_file: could not write '%s' to '%s'" % (file_base_name(filename), folder)
return result