1

我有一个从 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尝试读取保存的文件时,laspy.util.LaspyException: Invalid format: h0.0出现错误)

我该怎么做?

4

1 回答 1

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('----')

在此处输入图像描述

于 2021-02-19T03:51:05.687 回答