在许多StackOverflow问题和答案中,例如1,2或......,以及网络上的许多其他地方,人们使用以下模式使用iter_content
检索结果:
for chunk in r.iter_content(chunk_size=512 * 1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
但是if chunk:
条件真的是必要的,特别是当块大小是像这里的正整数时?
底层代码是否已处理此案例?对我而言,似乎确实如此,请参阅3,4 ......
检查空块是否仍然是一个好习惯?
附:我知道请求文档建议这样做for iter_lines
:
for line in r.iter_lines():
# filter out keep-alive new lines
if line:
这个问题只是关于iter_content
。
从另一个角度看这个也很有趣:
因此,即使使用iter_lines
写入文件,人们也不应该担心这些事情。
你是完全正确的,测试chunk
是非空的是多余的。 requests
和urllib3
中的整个代码路径已经确保您只能获得非空的块。
底层代码确实需要检查空块;那些可能是由网络延迟和/或解压缩引起的(没有足够的数据到达解压缩另一个块)。