草庐IT

python - 重新导入被测模块以丢失上下文

许多Python模块在不定义类的情况下保留内部状态,例如logging维护多个可通过getLogger()访问的记录器。如何测试这样的模块?使用标准unittest工具,我希望TestCase类中的各种测试重新导入我的被测模块,以便每次它都失去其上下文。这能做到吗? 最佳答案 importunittestimportsysclassTest(unittest.TestCase):deftearDown(self):try:delsys.modules['logging']exceptKeyError:passdeftest_logg

Python 字符串格式 - 限制字符串长度,但修剪字符串开头

我正在使用带有自定义格式化程序的Python标准日志记录模块,我在其中限制了某些字段的长度。它使用标准的%Python运算符。我可以像这样对百分比格式的字符串应用限制(这将长度限制为10个字符):>>>"%.10s"%"LoremIpsum"'LoremIpsu'是否可以从一开始就对其进行修剪,以便输出为'oremIpsum'(无需操作右侧参数)? 最佳答案 这可以通过切片轻松完成,因此您不需要任何字符串格式操作来完成您的工作>>>"LoremIpsum"[-10:]'oremIpsum'

python - 在 Python 中查找原始异常的模块名称

例子:>>>try:...myapp.foo.doSomething()...exceptException,e:...print'Thrownfrom:',modname(e)Thrownfrom:myapp.util.url在上面的示例中,异常实际上是在myapp/util/url.py模块中抛出的。有没有办法获取该模块的__name__?我打算在logging.getLogger函数中使用它。 最佳答案 这应该有效:importinspecttry:some_bad_code()exceptException,e:frm=in

python - GoogleAppEngineLauncher 在哪里保存本地日志文件?

GoogleAppEngineLauncher可以在开发期间在我的Mac上运行时显示我的应用程序的本地日志文件。但是,我不能在那里更改字体大小,所以我想使用tail命令自己查看日志文件。很遗憾,我找不到日志文件。它们不在/var/log/、~/Library/Logs或/Library/Logs下。你知道他们在哪里吗?(可能没有物理文件,只有python开发环境的标准输出,所以日志只在启动器应用程序中可用。) 最佳答案 正如您推测的那样,并且可以通过研究源文件/usr/local/google_appengine/google/ap

python - 使用 Python 日志记录格式的制表

我将python日志记录模块与“本地”一起使用配置文件支持(config.fileconfig),如此处文档中所述:http://docs.python.org/library/logging.html(查看logging.conf文件)我想知道是否可以在配置文件中提供表格数据格式:示例配置文件如下:[formatter_simpleFormatter]format=%(asctime)s-%(name)s-%(levelname)s-%(message)s我虽然在格式中使用\t就足够了,但事实并非如此:format=%(asctime)s\t%(name)s\t%(levelname

python - 如何将字典记录到日志文件中?

我有一本字典:d={name:"John",age:10}.日志文件设置为:logging.basicConfig(level=logging.DEBUG,filename="sample.log")是否可以将此词典记录到“sample.log”文件中?如果是,我该怎么做? 最佳答案 有效的简单解决方案日志函数会将'%s'转换为字符串表示形式(如果对象恰好是容器,则repr()将用于包含的对象)importlogginglogging.basicConfig(level=logging.DEBUG,filename='sample.

Python:从不同模块登录到同一文件的正确方法

随着时间的推移,我写了一堆脚本,我正在重构脚本以保留代码DRY.我目前在各种脚本中使用这些内容:if__name__=='__main__':logger=logging.getLogger('dbinit')hdlr=logging.FileHandler('/var/logs/tmp/foo.log')formatter=logging.Formatter('%(asctime)s%(levelname)s%(message)s')hdlr.setFormatter(formatter)logger.addHandler(hdlr)logger.setLevel(logging.W

python - 如何在没有换行符的情况下打印numpy对象

我正在使用函数记录输入参数logging.debug('Inputtothisfunction=%s',inspect.getargvalues(inspect.currentframe())[3])但我不想在numpy对象中插入换行符。numpy.set_printoptions(linewidth=np.nan)去掉了一些,但是在二维对象中还是会插入换行符比如array([[0.84148239,0.71467895,0.00946744,0.3471317],[0.68041249,0.20310698,0.89486761,0.97799646],[0.22328803,0.3

python - 为乌鸦添加自定义标签

如何添加自定义标签让raven设置为Sentry?当我在django中使用raven时,有几个标签,如操作系统、浏览器等。但我想自己使用raven添加此类标签,而不使用django。谢谢。 最佳答案 如果我正确理解了这个问题,你可以在extra字典中将任何你想要的传递给Sentry,参见ravendocs.您还可以通过capture*方法构造消息(也可以传递extra):capturecaptureExceptioncaptureMessagecaptureQuery顺便说一句,操作系统、浏览器...等等参数sentry从传递的re

python - 在 Python 记录器中覆盖 lineno 的最佳方法

我编写了一个装饰器,用于记录用于调用特定函数或方法的参数。如下所示,除了logRecord中报告的行号是装饰器的行号而不是被包装的func的行号外,它运行良好:fromfunctoolsimportwrapsimportinspectimportloggingarg_log_fmt="{name}({arg_str})"deflog_args(logger,level=logging.DEBUG):"""Decoratortologargumentspassedtofunc."""definner_func(func):line_no=inspect.getsourcelines(fu