当前位置: 首页 > 面试题库 >

如何知道urllib.urlretrieve是否成功?

卓致远
2023-03-14
问题内容

urllib.urlretrieve即使文件在远程http服务器上不存在,它也会以静默方式返回,它只是将html页面保存到命名文件中。例如:

urllib.urlretrieve('http://google.com/abc.jpg', 'abc.jpg')

即使abc.jpg在google.com服务器上不存在abc.jpg,它只是默默返回,生成的不是有效的jpg文件,它实际上是html页面。我猜返回的标头(一个httplib.HTTPMessage实例)可以用来实际上告诉检索是否成功,但是我找不到的任何文档httplib.HTTPMessage

有人可以提供有关此问题的一些信息吗?


问题答案:

urllib2如果可能,请考虑使用。它比Windows更加先进和易于使用urllib

您可以轻松检测到任何HTTP错误:

>>> import urllib2
>>> resp = urllib2.urlopen("http://google.com/abc.jpg")
Traceback (most recent call last):
<<MANY LINES SKIPPED>>
urllib2.HTTPError: HTTP Error 404: Not Found

resp实际上是HTTPResponse对象,您可以使用以下方法做很多有用的事情:

>>> resp = urllib2.urlopen("http://google.com/")
>>> resp.code
200
>>> resp.headers["content-type"]
'text/html; charset=windows-1251'
>>> resp.read()
"<<ACTUAL HTML>>"


 类似资料:
  • 问题内容: 我正在使用PDO插入记录(mysql和php) 有没有办法知道它是否成功插入,例如,是否由于重复而没有插入记录? 编辑:当然,我可以查看数据库,但是我的意思是程序反馈。 问题答案: 成功返回true。还有,你可以检查错误。

  • 问题内容: 我有一个表格,基本上是上传一个文件。我要提交两次表格,第1次不包含多部分,第二次1次包含多部分。 但是我想先检查一下第一次提交表单是否成功,然后再进行第二次提交 引用@Vern后编辑 这是我的servlet部分。我在哪里确定它是否由多个部分组成。如果未将 resultType 存储到会话变量中,则返回, 现在,我要检查此“已 提交 ”或类似内容,然后第二次提交表格。 第二表单提交:在这

  • 我现在正在阅读日志,试图理解为什么两台设备无法通过蓝牙连接。有没有办法通过读取logcat来知道这两个设备是否成功配对?我没有带设备,只是通过阅读日志来了解情况。 也许我应该寻找。这些状态在某处有定义吗?

  • handler_name:SoundHandle\n输出#0,mp3,to'/tmp/voice00045.mp3':\n元数据:\n major_brand:3gp4\n minor_version:0\n compatible_brands:isom3gp4\n TSSE:lavf56.40.101\n Stream#0:0(eng):audio:mp3(libmp3lame),44100 H

  • 问题内容: 我有一个名为的方法的对象,该方法启动三个线程。 每个线程执行完毕后,如何获得通知? 有没有办法知道一个(或全部)线程是否已完成或仍在执行? 问题答案: 你可以通过多种方式执行此操作: 在主线程中使用以阻塞方式等待每个线程完成,或者 以轮询方式(通常不鼓励使用)检查,等待每个线程完成,或者 非常规的,对于每个有问题的线程,调用来调用对象中的方法,并对每个线程进行编程以在完成时抛出未捕获的

  • 问题内容: 我正在尝试使用JDBC在Oracle 11g数据库上执行DDL语句。我现在用的是这样做的的类。 以下是执行查询并尝试确定查询结果的代码段: 我不是数据库专家,但是是否存在DDL语句执行失败且不引发的情况?如果没有,则无需捕获execute方法返回的内容。缺少表示DDL语句成功执行。 我正在关注的教程建议对DDL语句使用此方法: 尽管Jdbc文档建议使用来执行DDL语句。两者中哪一个更可