小编Col*_*ips的帖子

来自多个模块的Python日志记录问题

我有3个python模块。

LogManager.py
Runner.py
Other.py
Run Code Online (Sandbox Code Playgroud)

Runner.py是事件链中的第一个主要模块,并且从该模块内部Other.py调用函数。

因此,在内部,Runner.py我有一个函数调用LogManager.py

logger = LogManager.get_log()
Run Code Online (Sandbox Code Playgroud)

从那里,我可以制作简单的日志,例如 logger.critical("OHNOES")

我想要执行的get_log功能类似于单例模式,如果未设置记录器,它将设置记录器并返回它。否则,它将仅返回记录器。

LogManager.py的内容:

import logging

def get_log():
    logger = logging.getLogger('PyPro')
    logger.setLevel(logging.DEBUG)

    # create file handler which logs even debug messages
    fh = logging.FileHandler('pypro.log')
    fh.setLevel(logging.DEBUG)

    # create console handler with a higher log level
    ch = logging.StreamHandler()
    ch.setLevel(logging.WARNING)

    # create formatter and add it to the handlers
    fhFormatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
    chFormatter = logging.Formatter('%(levelname)s - %(filename)s - Line: %(lineno)d - …
Run Code Online (Sandbox Code Playgroud)

python logging singleton

6
推荐指数
1
解决办法
4878
查看次数

你如何使用__init__.py?

我正在尝试了解该__init__.py文件如何用于打包和调用来自不同目录的模块.

我有这样的目录结构:

init_test\
__init__.py
     a\
        aaa.py
     b\
        bbb.py
Run Code Online (Sandbox Code Playgroud)

aaa.py那里有一个叫做的函数test

bbb.py 看起来像这样:

import init_test.a.aaa
if __name__ == "__main__":
    init_test.a.aaa.test()
Run Code Online (Sandbox Code Playgroud)

但这给了我 ImportError: No module named a.aaa

我究竟做错了什么?我试过从包结构上面的模块做相同的基本事情,而不是在包内,这也不起作用?我的__init__.py

python module

6
推荐指数
2
解决办法
3396
查看次数

二进制Delta存储

我正在寻找二进制增量存储解决方案来版本大型二进制文件(数字音频工作站文件)

使用DAW文件时,与用于存储原始数据(波形)的大量数据相比,大多数更改(特别是在混合结束时)非常小.

为我们的DAW文件建立一个版本控制系统会很棒,这样我们就可以回滚到旧版本了.

系统只会保存每个版本的二进制文件(差异)之间的差异.这将为我们提供从当前版本更改为先前版本的说明列表,而不存储每个版本的完整文件.

是否有任何当前的版本控制系统可以做到这一点?我已经阅读了SVN使用二进制差异以节省回购中的空间...但我也读过它实际上并没有为二进制文件只做文本文件...不确定.有任何想法吗?

我现在的行动计划是继续研究预先存在的工具,如果不存在,可以熟悉c/c ++读取二进制数据并自己创建工具.

binary version-control storage binary-data delta

5
推荐指数
1
解决办法
2845
查看次数

扩展 Python 记录器

我正在寻找一种简单的方法来扩展标准 python 库中定义的日志记录功能。我只想能够选择是否将我的日志也打印到屏幕上。

示例:通常要记录警告,您会调用:

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s: %(message)s', filename='log.log', filemode='w')
logging.warning("WARNING!!!")
Run Code Online (Sandbox Code Playgroud)

这将设置日志的配置并将警告放入日志中

我想要一些类似的电话:

logging.warning("WARNING!!!", True)
Run Code Online (Sandbox Code Playgroud)

其中 True 语句表示日志是否也打印到标准输出。

我已经看到了一些覆盖记录器类的实现示例

但我是这门语言的新手,并没有真正了解正在发生的事情,或者如何实现这个想法。任何帮助将不胜感激 :)

python logging stdout

3
推荐指数
1
解决办法
6710
查看次数

如何在使用tortoise svn进行区分时删除使用WinMerge的选项

我刚刚在我的Windows机器上安装了WinMerge.在进行设置时,它询问我是否愿意将WinMerge与tortoise svn结合使用.此处的链接描述了该功能.

http://manual.winmerge.org/VersionControl.html

我真的不喜欢这个,因为我不能做正常的乌龟svn差异....

知道如何删除此选项吗?我在选项菜单或任何其他菜单中找不到任何内容

svn windows tortoisesvn winmerge

1
推荐指数
1
解决办法
1255
查看次数