迭代单个字节然后将其保存到文件中而不改变内容
Iterate over individual bytes then save it into a file without alternating the content
我有一个从 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
出现错误)
我该怎么做?
我看到你在使用 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('----')
我有一个从 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
出现错误)
我该怎么做?
我看到你在使用 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('----')