Перебирайте отдельные байты, а затем сохраняйте их в файл без изменения содержимого
У меня есть байтовая строка, возвращенная из API, и я сохраняю ее в
response.content
С небольшим содержанием я могу без проблем сохранить его в файл, используя следующий код
with open(save_path, 'wb') as save_file:
save_file.write(response.content)
Но для файла большего размера это вызовет ошибку памяти, поэтому я попытался не читать содержимое сразу, используя этот код
with open(save_path, 'wb') as save_file:
for x in response.content:
save_file.write(bytes(x)) #the x from iteration seem to be converted to int so I convert it back
Но приведенный выше метод, похоже, меняет содержимое, потому что он больше не совместим с другой библиотекой (в моем случае, когда Ласпи пытается прочитать сохраненный файл,
laspy.util.LaspyException: Invalid format: h0.0
появляется ошибка)
Как я могу это сделать?
1 ответ
Я вижу вашу проблему с использованием
bytes(x)
. измените это на
x.to_bytes(1, 'big')
реши твою проблему
Используйте приведенный ниже код, чтобы узнать, какая разница
a = b'\xcf\x84o\xcf\x81\xce\xbdo\xcf\x82'
a.decode('utf-8') # τoρνoς
with open('./save.txt', 'wb') as save_file:
for i in a:
print(i.to_bytes(1, 'big')) # write it to file, not the others
print(i)
print(bytes(i))
print('----')