小编dre*_*mac的帖子

是否可以根据消息日志级别修改Python的日志记录格式?

我正在使用Python的logging机制将输出打印到屏幕上.我可以使用print语句执行此操作,但我希望允许用户更精细地调整粒度以禁用某些类型的输出.我喜欢为错误打印的格式,但是当输出级别为"info"时,我更喜欢更简单的格式.

例如:

  logger.error("Running cmd failed")
  logger.info("Running cmd passed")
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我希望以不同的方式打印错误的格式:

# error
Aug 27, 2009 - ERROR: Running cmd failed
# info
Running cmd passed
Run Code Online (Sandbox Code Playgroud)

是否可以为不同的日志级别设置不同的格式而无需多个日志记录对象?我宁愿在没有修改记录器的情况下这样做,因为有大量的if/else语句来确定如何记录输出.

python logging string-formatting

63
推荐指数
8
解决办法
2万
查看次数

str.format()引发KeyError

以下代码引发了一个KeyError异常:

addr_list_formatted = []
addr_list_idx = 0

for addr in addr_list: # addr_list is a list
    addr_list_idx = addr_list_idx + 1
    addr_list_formatted.append("""
        "{0}"
        {
        "gamedir"  "str"
        "address"  "{1}"
        }
    """.format(addr_list_idx, addr))
Run Code Online (Sandbox Code Playgroud)

为什么?

我正在使用Python 3.1.

python syntax string-formatting delimiter missing-data

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

63
推荐指数
5
解决办法
12万
查看次数

我可以为内置Python类型添加自定义方法/属性吗?

例如 - 假设我想helloWorld()为Python的dict类型添加一个方法.我可以这样做吗?

JavaScript有一个行为方式的原型对象.也许这是糟糕的设计,我应该继承dict对象,但它只适用于子类,我希望它可以在任何和所有未来的字典上工作.

以下是它在JavaScript中的表现:

String.prototype.hello = function() {
    alert("Hello, " + this + "!");
}
"Jed".hello() //alerts "Hello, Jed!"
Run Code Online (Sandbox Code Playgroud)

这是一个有用的链接,包含更多示例 - http://www.javascriptkit.com/javatutors/proto3.shtml

python monkeypatching custom-attributes built-in-types

62
推荐指数
4
解决办法
2万
查看次数

PHP:我可以在array_map函数中获取索引吗?

我在php中使用地图如下:

function func($v) {
    return $v * 2;
}

$values = array(4, 6, 3);
$mapped = array_map(func, $values);
var_dump($mapped);
Run Code Online (Sandbox Code Playgroud)

是否有可能获得函数中值的索引?

另外 - 如果我正在编写需要索引的代码,我应该使用for循环而不是map吗?

php arrays iteration dictionary loops

62
推荐指数
4
解决办法
5万
查看次数

61
推荐指数
3
解决办法
13万
查看次数

使用ImageMagick将SVG转换为带抗锯齿的透明PNG

我想将SVG图像转换为具有透明背景和抗锯齿边缘的PNG文件(使用半透明像素).不幸的是,我不能让ImageMagick做抗锯齿,边缘总是看起来很糟糕.这是我试过的:

convert +antialias -background transparent  in.svg -resize 25x25 out.png
Run Code Online (Sandbox Code Playgroud)

我可以使用任何想法或不同的命令行工具?

svg png imagemagick inkscape

61
推荐指数
6
解决办法
4万
查看次数

为什么MySQL允许"分组"查询没有聚合函数?

惊喜 - 这是MySQL中完全有效的查询:

select X, Y from someTable group by X
Run Code Online (Sandbox Code Playgroud)

如果您在Oracle或SQL Server中尝试过此查询,则会收到自然错误消息:

Column 'Y' is invalid in the select list because it is not contained in 
either an aggregate function or the GROUP BY clause.
Run Code Online (Sandbox Code Playgroud)

那么MySQL如何确定每个X显示哪个Y?它只选了一个.据我所知,它只是挑选它找到的第一个Y. 理由是,如果Y既不是聚合函数也不是group by子句,那么在查询中指定"select Y"就没有意义.因此,我作为数据库引擎将返回我想要的任何内容,你会喜欢它.

甚至还有一个MySQL配置参数来关闭这种"松散". http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_only_full_group_by

本文甚至提到MySQL在这方面如何被批评为ANSI-SQL不兼容. http://www.oreillynet.com/databases/blog/2007/05/debunking_group_by_myths.html

我的问题是: 为什么 MySQL是这样设计的?打破ANSI-SQL的理由是什么?

mysql sql standards-compliance ansi-sql

59
推荐指数
2
解决办法
2万
查看次数

短rot13函数 - Python

我在Python中搜索一个简短而酷的rot13函数;-)我写了这个函数:

def rot13(s):
    chars = "abcdefghijklmnopqrstuvwxyz"
    trans = chars[13:]+chars[:13]
    rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
    return ''.join( rot_char(c) for c in s ) 
Run Code Online (Sandbox Code Playgroud)

谁能让它变得更好?例如,支持大写字符.

python string encoding

59
推荐指数
8
解决办法
9万
查看次数

使用*args,**kwargs和optional/default参数调用Python函数

在python中,我可以定义一个函数如下:

def func(kw1=None,kw2=None,**kwargs):
   ...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我可以调用func作为:

func(kw1=3,kw2=4,who_knows_if_this_will_be_used=7,more_kwargs=Ellipsis)
Run Code Online (Sandbox Code Playgroud)

我也可以定义一个函数:

def func(arg1,arg2,*args):
    ...
Run Code Online (Sandbox Code Playgroud)

可称为

func(3,4,additional,arguments,go,here,Ellipsis)
Run Code Online (Sandbox Code Playgroud)

最后,我可以将两种形式结合起来

def func(arg1,arg2,*args,**kwargs):
    ...
Run Code Online (Sandbox Code Playgroud)

但是,什么是行不通的是:

func(arg1,arg2,*args,kw1=None,kw2=None,**kwargs):  #SYNTAX ERROR (in python 2 only,  apparently this works in python 3)
    ...
Run Code Online (Sandbox Code Playgroud)

我最初的想法是,这可能是因为一个功能

def func(arg1,arg2,*args,kw1=None):
    ...
Run Code Online (Sandbox Code Playgroud)

可以称为

func(1,2,3) #kw1 will be assigned 3
Run Code Online (Sandbox Code Playgroud)

因此,这将引入一些含糊不清的关于3是否应该打包成args或kwargs.但是,使用python 3,可以指定仅关键字参数:

def func(a,b,*,kw=None):  #can be called as func(1,2), func(1,2,kw=3), but NOT func(1,2,3)
   ...
Run Code Online (Sandbox Code Playgroud)

有了这个,似乎没有语法模糊:

def func(a,b,*args,*,kw1=None,**kwargs):
    ...
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会导致语法错误(使用Python3.2测试).这是否有理由让我失踪?并且,有没有办法获得我上面描述的行为(使用默认参数*args) - 我知道我可以通过操作函数内部的kwargs字典来模拟该行为.

python syntax kwargs python-3.x

59
推荐指数
3
解决办法
3万
查看次数