Python http错误日志记录

Python http错误日志记录,python,http,logging,error-handling,Python,Http,Logging,Error Handling,以下问题 我确实有一个python脚本来处理HTTP请求。 有时我会遇到一些错误,比如http 400。现在我想记录这些,并中断脚本停止工作 import logging date = .strftime()..... try: script X except: error = urllib2.HTTPError errorcode = error.code file = open ("error.txt",'r+')

以下问题

我确实有一个python脚本来处理HTTP请求。 有时我会遇到一些错误,比如http 400。现在我想记录这些,并中断脚本停止工作

 import logging

 date = .strftime().....

 try: 
        script X
 except:
        error = urllib2.HTTPError
        errorcode = error.code
        file = open ("error.txt",'r+')
        file.write("Error Code: %s, date \n", errorcode)
        file.close()
        pass
是这样吗?还是我做错了什么。我应该为HTTP错误使用If吗

这会阻止脚本在获得错误->通过时停止吗

谢谢大家!

使用python库::

try:
    res = requests.post(url, data, headers=headers, auth=auth)
    if res.status_code == 200 or res.status_code == 201:
        return 'SUCCESS', res.content
    else:
        return 'FAIL', res.status_code
except Exception as e:
    print "Http request failed... %s" % traceback.format_exc()

构造代码的更好方法是使用错误日志(Python内置的一个功能):

你的台词是:

error = urllib2.HTTPError
在这种情况下没有意义。它说
error
urllib2.HTTPError
类。该类用于引发异常,您对捕获异常感兴趣

通常我们写:

try: 
    #  http attempt
except urllib2.HTTPError, error:
    errorcode = error.code
这表示您正在处理的异常的类型,
urllib2.HTTPError
,这就是
error
的类型,或者从
urllib2.HTTPError
继承的任何类对象

这也意味着您不会处理任何其他类型的异常。这是一件好事。只处理你能处理的事情,让其他一切从你身边飞过

此时,您的
except
语句捕获所有可能的异常类型。您还丢弃了这些信息,因此您不知道异常是什么

写入文件时,请将
一起使用。如果写入文件时出现异常,这将确保文件正确关闭。不要将
文件
用作变量名。您需要使用
%
插入字符串格式:

    with open ("error.txt",'r+') as log:
        log.write("Error Code: %s, date \n" % errorcode)

好的,代码检查完毕。

为什么你不能自己试试呢?你应该使用。但是你的方法是不记录错误。只打印错误不是我的目标。此外,我使用urllib2而不是请求。我应该改为请求方法吗?不要建议为基本问题安装库。哦,对了,谢谢,我的错。因此,我将记录错误,但仍使用“pass”表示“继续”,如果块为空,则只需要
pass
。看见
    with open ("error.txt",'r+') as log:
        log.write("Error Code: %s, date \n" % errorcode)