对于以下代码:

logger.debug('message: {}'.format('test'))

Pylint产生以下警告:

logging-format-interpolation (W1202): 在日志函数中使用%格式,并将%参数传递为 当日志语句的调用形式为 “日志记录。(format_string.format (format_args…)”。这样的 调用应该使用%格式,而将插值留给 日志函数,通过将参数作为参数传递。

我知道我可以关闭这个警告,但我想了解它。我假设使用format()是Python 3中输出语句的首选方式。为什么记录器语句不是这样?

当我们处理本地文件时,我试图做的事情相当简单,但当我试图用远程URL这样做时,问题就来了。

基本上,我试图从一个URL提取的文件创建一个PIL图像对象。当然,我总是可以只获取URL并将其存储在临时文件中,然后将其打开到一个图像对象中,但这感觉非常低效。

以下是我所拥有的:

Image.open(urlopen(url))

它抱怨seek()不可用,所以我尝试了这个:

Image.open(urlopen(url).read())

但这也不管用。是否有更好的方法来做到这一点,或者写入临时文件是做这类事情的公认方法?

我习惯使用CSV文件在Python中输入和输出数据,但这存在明显的挑战。是否有简单的方法将字典(或字典集)存储在JSON或pickle文件中?

例如:

data = {}
data ['key1'] = "keyinfo"
data ['key2'] = "keyinfo2"

我想知道如何保存这个,然后如何加载它回来。

如何使用cat读取文件的第一行?

我想管道标准输出的程序,同时保持它在屏幕上。

通过一个简单的例子(这里使用echo只是为了说明):

$ echo 'ee' | foo ee <-我想看到的输出

我知道tee可以复制stdout到文件,但这不是我想要的。 $ echo 'ee' | tee output.txt | foo

我试着 $ echo 'ee' | tee /dev/stdout | foo但它不起作用,因为tee输出到/dev/stdout是通过管道输出到foo的

我想把我的程序的输出信息到一个文件夹。如果给定的文件夹不存在,那么程序应该创建一个新的文件夹,文件夹名称为程序中给定的。这可能吗?如果是,请告诉我怎么做。

假设我已经给出了文件夹路径像“C:\Program Files\alex”和alex文件夹不存在,那么程序应该创建alex文件夹,并应该把输出信息放在alex文件夹。

考虑一下——基类a,类B继承自a,类C继承自B,在初始化器中调用父类初始化器的通用方法是什么?如果这听起来仍然太模糊,这里有一些代码。

class A(object):
    def __init__(self):
        print "Initialiser A was called"

class B(A):
    def __init__(self):
        super(B,self).__init__()
        print "Initialiser B was called"

class C(B):
    def __init__(self):
        super(C,self).__init__()
        print "Initialiser C was called"

c = C()

我现在就是这么做的。但它似乎还是有点太非泛型了——您仍然必须手动传递正确的类型。

现在,我尝试使用self。__class__作为super()的第一个参数,但是,显然它不起作用-如果你把它放在C的初始化式中-很好,B的初始化式会被调用。如果你在B中做同样的事情,“self”仍然指向C的一个实例,所以你最终再次调用B的初始化式(这以无限递归结束)。

目前没有必要考虑钻石继承的问题,我只是对解决这个具体问题感兴趣。

我有一个动态的DataFrame,它工作得很好,但当没有数据要添加到DataFrame时,我得到一个错误。因此,我需要一个解决方案来创建一个只有列名的空DataFrame。

现在我有这样的东西:

df = pd.DataFrame(columns=COLUMN_NAMES) # Note that there are now row data inserted.

PS:列名仍然会出现在DataFrame中,这很重要。

但当我像这样使用它时,结果是这样的:

Index([], dtype='object')
Empty DataFrame

“空数据框架”部分很好!但我需要显示的不是索引,而是列。

我发现了一件重要的事情:我正在使用Jinja2将这个DataFrame转换为PDF,因此我调用了一个方法,首先将它输出到HTML,就像这样:

df.to_html()

我想这就是列的缺失之处。

总的来说,我遵循了这个例子:http://pbpython.com/pdf-reports.html。css也是来自链接。这就是我将数据帧发送到PDF的方法:

env = Environment(loader=FileSystemLoader('.'))
template = env.get_template("pdf_report_template.html")
template_vars = {"my_dataframe": df.to_html()}

html_out = template.render(template_vars)
HTML(string=html_out).write_pdf("my_pdf.pdf", stylesheets=["pdf_report_style.css"])

从Udacity的深度学习课程中,y_i的softmax仅仅是指数除以整个Y向量的指数之和:

其中S(y_i)是y_i的软最大函数e是指数函数j是no。输入向量Y中的列。

我试过以下几种方法:

import numpy as np

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

scores = [3.0, 1.0, 0.2]
print(softmax(scores))

返回:

[ 0.8360188   0.11314284  0.05083836]

但建议的解决方案是:

def softmax(x):
    """Compute softmax values for each sets of scores in x."""
    return np.exp(x) / np.sum(np.exp(x), axis=0)

它产生与第一个实现相同的输出,尽管第一个实现显式地取每列与Max的差值,然后除以和。

有人能用数学方法解释一下吗?一个是对的,另一个是错的?

实现在代码和时间复杂度方面是否相似?哪个更有效率?

最近,我在安装SciPy时遇到了麻烦,特别是在我正在开发的Heroku应用程序上,我发现了Conda。

使用Conda可以创建环境,这与virtualenv的功能非常相似。我的问题是:

如果我使用Conda,它会取代对virtualenv的需求吗?如果不是,我如何将两者结合使用?我是在Conda中安装virtualenv,还是在virtualenv中安装Conda ? 我还需要使用pip吗?如果是这样,我还能在隔离的环境中安装带有pip的包吗?