小编Jef*_*ner的帖子

将"静态"函数添加到结构中

encoding/base64和encoding/hex都支持几乎相同的函数集,但base64使用基于类的编码器,而hex在顶层导出方法.有没有一种简单的方法来创建一个围绕十六进制的包装器,以便您可以使用抽象的编码接口?更一般地说,有没有办法将方法绑定到结构?(例如,SomeStruct.Encode = hex.Encode)

到目前为止,我必须在hexEncoder结构上定义与函数具有相同签名的hex函数.我创建了一个这样的界面:

type Encoding interface {
    Decode(dst, src []byte) (n int, err error)
    DecodedLen(n int) int
    Encode(dst, src []byte) // base64 returns nothing, hex returns int
    EncodedLen(n int) int
}
Run Code Online (Sandbox Code Playgroud)

与之完美配合base64.StdEncoding,但我不知道如何包装十六进制方法.我为hex创建了一个空结构:

// wrap hex encoding/decoding so that it can be used interchangeably with base64 encoding
type hexEncoder struct {}

func (h hexEncoder) Decode(dst, src []byte) (n int, err error) {
    return hex.Decode(dst, src)
}
func (h hexEncoder) DecodedLen(n int) int …
Run Code Online (Sandbox Code Playgroud)

go

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

允许对现有文件进行gzip

我有静态资产存储在GCS中,我想为它们提供gzip压缩(但它们是在没有压缩的情况下上传的).有没有办法设置文件进行压缩而无需下载并以gzip格式重新上传?

我尝试使用gsutil设置内容编码头(即,gsutil setmeta -h 'Content-Encoding:gzip' <some_object_uri>但它只是导致文件上的"服务不可用"(我假设是来自服务器尝试解压缩文件并失败或类似的东西).

google-cloud-storage

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

无法在Mac Os Lion上轻松安装Python 2.7.3的readline

我正在尝试安装python readline模块.我已经通过自制软件安装了readline.如果我输入

easy_install readline
Run Code Online (Sandbox Code Playgroud)

我明白了

Downloading http://pypi.python.org/packages/source/r/readline/readline-6.2.2.tar.gz#md5=ad9d4a5a3af37d31daf36ea917b08c77
Processing readline-6.2.2.tar.gz
Writing /var/folders/44/dhrdb5sx53s243j4w03063vh0000gn/T/easy_install-64FbG8/readline-6.2.2/setup.cfg
Running readline-6.2.2/setup.py -q bdist_egg --dist-dir /var/folders/44/dhrdb5sx53s243j4w03063vh0000gn/T/easy_install-64FbG8/readline-6.2.2/egg-dist-tmp-NOmStB
clang: error: no such file or directory: 'readline/libreadline.a'
clang: error: no such file or directory: 'readline/libhistory.a'
error: Setup script exited with error: command '/usr/bin/clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

谢谢

python readline easy-install osx-lion

5
推荐指数
2
解决办法
7130
查看次数

将"全局导入"注入Python函数

简短但完整的摘要

我希望允许我的函数(类工厂)的用户在使用我的函数时注入/覆盖全局导入(下面对基本原理的更长解释).但是有大约10个不同的变量可以传入,并且它为代码添加了许多非常重复的行.(授予,也使得调用也更复杂:P)现在,我正在做类似以下的事情(只是简化了所有这些).为了使它可以运行,我正在使用一个虚拟类,但在实际的脚本中我会使用import pkg1,等等.这比一个类工厂等更清晰,更短.

class Dummy(object): pass

pkg1, pkg2 = Dummy(), Dummy()
pkg1.average = lambda *args : sum(args) / len(args)
pkg2.get_lengths = lambda *args : map(len, args)


def get_average(*args, **kwargs):
    average = kwargs.get("average") or pkg1.average
    get_lengths = kwargs.get("get_lengths") or pkg2.get_lengths
    return average(*get_lengths(*args))

adjusted_length = lambda *args: map(len, args) + [15]
print get_average([1,2], [10, 4, 5, 6]) == 3 # True
print get_average([1,2], [10, 4, 5, 6], get_lengths=adjusted_length) == 7 # True
Run Code Online (Sandbox Code Playgroud)

相关的SO问题

这个堆栈溢出帖子:在Python中修改本地化,似乎特别相关,最初我想通过存储到本地字典来覆盖本地,但(1)它似乎不起作用,(2)它似乎是一个坏的理念.所以,我想知道是否有另一种方法可以做到这一点.

这看起来很有希望(在python中将对象添加到另一个模块的全局变量 …

python

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

一种更加"pythonic"的方法来"检查无并处理它"

我有一个listdict连键['name','content','summary',...].所有值都是字符串.但有些价值观None.我需要删除所有的新生产线content,summary以及一些其他的按键.所以,我这样做:

...
...
for item in item_list:
    name = item['name']
    content = item['content']
    if content is not None: content = content.replace('\n','')
    summary = item['summary']
    if summary is not None: summary = summary.replace('\n','')
    ...
    ...
...
...
Run Code Online (Sandbox Code Playgroud)

我有点觉得这个if x is not None: x = x.replace('\n','')成语不那么聪明或干净.是否有更"pythonic"或更好的方法呢?

谢谢.

python string coding-style

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

如何在Java中模拟python运算符"in"?

这是一个非常漂亮的操作员,在Java中没有它真的很令人沮丧.

if ("Nova Categoria" in textField1.getText()) {
        textField1.setText("");
        textField1.setForeground(Color.BLACK);
    }
Run Code Online (Sandbox Code Playgroud)

血腥的"=="并没有给我我想要的东西,而我的Pythonic Mind现在无法解决这个问题,因为我想要一个"in".

你会如何模拟Java中的"in"运算符?

java

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

如何加快Pandas多级数据帧总和?

我正在努力加快几个大型多级数据帧的总和.

这是一个示例:

df1 = mul_df(5000,30,400) # mul_df to create a big multilevel dataframe
#let df2, df3, df4 = df1, df1, df1 to minimize the memory usage, 
#they can also be mul_df(5000,30,400) 
df2, df3, df4 = df1, df1, df1

In [12]: timeit df1+df2+df3+df4
1 loops, best of 3: 993 ms per loop
Run Code Online (Sandbox Code Playgroud)

我不满足于993ms,有没有办法加速?cython可以改善性能吗?如果是的话,如何编写cython代码?谢谢.

注意: mul_df()是创建演示多级数据帧的功能.

import itertools
import numpy as np
import pandas as pd

def mul_df(level1_rownum, level2_rownum, col_num, data_ty='float32'):
    ''' create multilevel dataframe, for example: mul_df(4,2,6)'''

    index_name = …
Run Code Online (Sandbox Code Playgroud)

python performance cython pandas

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

NDB是否仍然使用default = None或属性设置为None进行索引?

我希望能够运行如下查询:MyModel.query(MyModel.some_property == None)并获得结果.我知道如果我不在default=<some default>一个属性中,我将无法查询它,但如果我设置default=None它会索引它吗?

同样,设置值是否None会导致属性被索引ndb.Model?如果你传递some_keyword_arg=None给构造函数怎么办?

我知道做类似的事情:ndb.StringProperty(default='')意味着你可以查询它,只是不清楚使用的语义None.

google-app-engine python-2.7

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

Python以什么顺序解析函数?(为什么string.join(lst.append('a'))会失败?)

string.join如何解决?我尝试使用它如下:

import string 
list_of_str = ['a','b','c'] 
string.join(list_of_str.append('d'))
Run Code Online (Sandbox Code Playgroud)

但是得到了这个错误(在2.7.2中完全相同的错误):

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/string.py", line 318, in join
    return sep.join(words)
TypeError
Run Code Online (Sandbox Code Playgroud)

如果您尝试再次加入list_of_string,则可以看到附加确实发生了:

print string.join(list_of_string)
-->'a b c d'
Run Code Online (Sandbox Code Playgroud)

这是来自string.py的代码(找不到sep内置str.join()的代码):

def join(words, sep = ' '):
    """join(list [,sep]) -> string

    Return a string composed of the words in list, with
    intervening occurrences of sep.  The default separator is a
    single space.

    (joinfields and join are synonymous)

    """
    return sep.join(words)
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?这是一个错误吗?如果它是预期的行为,它如何解决/为什么会发生?我觉得我要么学习一些关于python执行其函数/方法的顺序的有趣内容,或者我只是遇到了Python的历史怪癖.


旁注:当然,它只是事先做了追加:

list_of_string.append('d')
print string.join(list_of_string) …
Run Code Online (Sandbox Code Playgroud)

python types

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

如何使用Python正则表达式来获取Image src?

如何使用正则表达式从使用Python的以下html字符串中获取图像的src

<td width="80" align="center" valign="top"><font style="font-size:85%;font-family:arial,sans-serif"><a href="http://news.google.com/news/url?sa=t&amp;fd=R&amp;usg=AFQjCNFqz8ZCIf6NjgPPiTd2LIrByKYLWA&amp;url=http://www.news.com.au/business/spain-victory-faces-market-test/story-fn7mjon9-1226390697278"><img src="//nt3.ggpht.com/news/tbn/380jt5xHH6l_FM/6.jpg" alt="" border="1" width="80" height="80" /><br /><font size="-2">NEWS.com.au</font></a></font></td>

我试着用

matches = re.search('@src="([^"]+)"',text)
print(matches[0])
Run Code Online (Sandbox Code Playgroud)

但什么也没得到

html python regex html-parsing

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

如何使用python为'in'实现自定义比较器

如果我有这样的课程:

class foo(object):
    def __init__(self, x, y, z):
         self.x = x
         self.y = y
         self.z = z
Run Code Online (Sandbox Code Playgroud)

在这样的列表中:

list = [foo(1, 2, 3), foo(4, 5, 6), foo(7, 8, 9)]
Run Code Online (Sandbox Code Playgroud)

我怎么能为'in'创建一个自定义测试,它只检查x和z值,这样:

new_foo = foo(1,8,3)
if new_foo in list:
    print True
else:
    print False
Run Code Online (Sandbox Code Playgroud)

会打印True

python

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

GAE/Python/jinja2 /如何引用join语句中的子目录

我在根目录的"static"子目录中有一个html文件"listagem.html".我想使用"listagem.html"作为jinja2的模板.

我尝试了这3个连接公式:

第一:

jinja_environment = jinja2.Environment(
    autoescape = True, 
    loader =  jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'static')))
Run Code Online (Sandbox Code Playgroud)

第二:

jinja_environment = jinja2.Environment(
    autoescape = True, 
    loader =  jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'static/')))
Run Code Online (Sandbox Code Playgroud)

第三:

jinja_environment = jinja2.Environment(
    loader = jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), '/static')))
        template = jinja_environment.get_template('listagem.html')
        self.response.out.write(template.render(template_values)) 
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

file not accessible: 'C:\\Users\\Me\\AppEngine\\MyAppRoot\\static\\listagem.html'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

坦克寻求帮助.

python google-app-engine django-templates jinja2

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

为什么这个Java程序使用嵌套ifs声明2!= 2?

让我们看看这个简单的Java代码:

class A {
    public static void main(String[] args) {
        if (1 == 1)
            if (2 == 2)
                if (2 != 2) // <-- should end here and do nothing
                    System.out.println("2 != 2");
            else
                System.out.println("2 != 2");
        else
            System.out.println("1 != 1");
    }
}
Run Code Online (Sandbox Code Playgroud)

正如评论所说,它应该看到1==1,然后2==2,最嵌套的条件2!=2失败,所以程序退出而不打印任何东西.但事实并非如此,相反它说2!=2:

$ javac A.java && java A
2 != 2
Run Code Online (Sandbox Code Playgroud)

为什么?

奇怪的是,它在Python中按预期工作:

>>> if (1 == 1):
...     if (2 == 2):
...         if (2 != 2):
...             print("2 …
Run Code Online (Sandbox Code Playgroud)

java boolean-logic if-statement nested

-2
推荐指数
3
解决办法
742
查看次数