Sha*_*han 2 python exception python-2.7 python-requests
我不完全确定问这个问题的最佳方式是什么,
但我正在编写一个脚本,使用 request.get() 从互联网下载一些内容,一切正常,但由于某种原因,现在引发了 StreamConsumedError() ,我不确定为什么。
Traceback (most recent call last):
File "./pythonDL-ver_0.0.4.py", line 90, in <module>
for chunk in response.iter_content(1024):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/requests/models.py", line 766, in iter_content
raise StreamConsumedError()
requests.exceptions.StreamConsumedError
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息,我可以添加它。谢谢。
while True:
count = count + 1
print 'testing ' + str(count) + '\n'
print url
url_2 = url.format(count = count)
print '////' + str(url_2) + ' for loop ' + str(count) + "////\n"
print str(url_2) + ' testing url \n'
filename = posixpath.basename(url_2)
print str(filename) + ' testing filename \n'
response = requests.get(url_2, stream = True)
responseString = str(response)
print str(responseString) + 'testing res2 \n'
if responseString == '<Response [404]>':
print '......No more Requests......\n'
break
elif responseString == '<Response [200]>':
print '......Successful Request....\n'
else:
break
print responseString
while responseString == '<Response [200]>':
print 'testing while loop: ' + str(responseString)
with open(filename, 'wb') as fp:
for chunk in response.iter_content(1024):
fp.write(chunk)
count += 1
print str(count) + ' = counting value'
Run Code Online (Sandbox Code Playgroud)
这是事情停止工作的循环。
while responseString == '<Response [200]>':
print 'testing while loop: ' + str(responseString)
with open(filename, 'wb') as fp:
for chunk in response.iter_content(1024):
fp.write(chunk)
Run Code Online (Sandbox Code Playgroud)
这个循环永远不会终止,一旦responseString
它<Response [200]>
永远保持下去,因为没有任何改变。
唯一阻止循环永远进行的事情是您可以多次读取流响应。因此,当循环再次尝试时,响应会引发错误。
最简单的修复方法是替换while
为if
if responseString == '<Response [200]>':
with open(filename, 'wb') as fp:
for chunk in response.iter_content(1024):
fp.write(chunk)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3358 次 |
最近记录: |