小编Ped*_*ano的帖子

Python:检查一个字典是否是另一个较大字典的子集

我正在尝试编写一个自定义过滤器方法,它接受任意数量的kwargs并返回一个列表,其中包含类似数据库的列表,其中包含那些kwargs.

例如,假设d1 = {'a':'2', 'b':'3'}d2=同样的事情.d1 == d2结果是真的.但是假设d2=同样的事情加上一堆其他的东西.我的方法需要能够判断d2中是否有d1,但Python不能用字典来表示.

语境:

我有一个字类,并且每个对象都有类似的属性word,definition,part_of_speech,等等.我希望能够在这些单词的主列表上调用过滤方法,例如Word.objects.filter(word='jump', part_of_speech='verb-intransitive').我无法弄清楚如何同时管理这些键和值.但是,对于其他人来说,这可能会在此背景下具有更大的功

python dictionary subset filter

91
推荐指数
8
解决办法
4万
查看次数

在Tkinter有什么方法可以使小部件不可见?

像这样的东西,会使小部件正常显示:

Label(self, text = 'hello', visible ='yes') 
Run Code Online (Sandbox Code Playgroud)

虽然这样的事情会使小部件根本不出现:

Label(self, text = 'hello', visible ='no') 
Run Code Online (Sandbox Code Playgroud)

python tkinter

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

python mock side_effect或return_value依赖于call_count

为了测试一个轮询函数,我想模拟一个子函数的调用,这样第一次调用它就会失败,第二次调用它就会成功.这是一个非常简化的版本:

poll_function(var1):
    value = sub_function(var1)  # First call will return None
    while not value:
        time.sleep(POLLING_INTERVAL)  
        value = sub_function(var1) # A subsequent call will return a string, e.g "data"
    return value
Run Code Online (Sandbox Code Playgroud)

这可能与框架中的Mock对象有关mock吗?我知道Mock对象有一个call_count我应该可以以某种方式使用的属性.

现在我已经通过创建一个我用来修补补丁的自定义模拟对象来解决它sub_function(),但我觉得应该有一个更好的更简洁的方法:

def test_poll():
    class MyMock(object):                                                      

        def __init__(self, *args):                                             
            self.call_count = 0                                                

        def sub_function(self, *args, **kwargs):                             
            if self.call_count > 1:                                            
                return "data"            
            else:                                                              
                self.call_count += 1                                           
                return None  

    my_mock = MyMock()                                                         
    with patch('sub_function', my_mock.sub_function):           
        ok_(poll_function())         
Run Code Online (Sandbox Code Playgroud)

python mocking

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

Python解析括号内的块

Python中解析匹配括号中包含的文本块的最佳方法是什么?

"{ { a } { b } { { { c } } } }"
Run Code Online (Sandbox Code Playgroud)

应该最初返回:

[ "{ a } { b } { { { c } } }" ]
Run Code Online (Sandbox Code Playgroud)

把它作为输入应该返回:

[ "a", "b", "{ { c } }" ]
Run Code Online (Sandbox Code Playgroud)

哪个应该返回:

[ "{ c }" ]

[ "c" ]

[]
Run Code Online (Sandbox Code Playgroud)

python parsing brackets text-parsing

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

基于Sphinx的文档的Markdown输出

我发现自己有一个用例,除了从基于Sphinx的文档源生成HTML和PDF之外,我还想生成reStructuredText源文件的Markdown版本.

我的初步研究没有在Sphinx中找到任何核心或扩展支持.除了手动使用pandoc或为任务创建新的Sphinx扩展外,是否有更简单/更集成的解决方案?

documentation markdown restructuredtext python-sphinx

26
推荐指数
2
解决办法
7610
查看次数

Python ElementTree解析未绑定的前缀错误

我在python中学习ElementTree.一切似乎都很好,除非我尝试用前缀解析xml文件:

test.xml:

<?xml version="1.0"?>
<abc:data>
   <abc:country name="Liechtenstein" rank="1" year="2008">
   </abc:country>
   <abc:country name="Singapore" rank="4" year="2011">
   </abc:country>
   <abc:country name="Panama" rank="5" year="2011">
   </abc:country>
</abc:data>
Run Code Online (Sandbox Code Playgroud)

当我尝试解析xml时:

import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

xml.etree.ElementTree.ParseError: unbound prefix: line 2, column 0
Run Code Online (Sandbox Code Playgroud)

我是否需要指定一些内容才能解析带有前缀的xml文件?

python xml prefix elementtree

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

Crontab无法执行Python脚本

crontab无法执行Python脚本.我用来运行Python脚本的命令行是可以的.

这些是我尝试的解决方案:

  • 添加#!/usr/bin/env python在顶部main.py
  • 添加PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin在顶部crontab
  • chmod 777main.py文件
  • service cron restart

我的crontab是:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

*/1 * * * * python /home/python_prj/main.py
Run Code Online (Sandbox Code Playgroud)

并且/ var/log/syslog中的日志是:

Nov  6 07:08:01 localhost CRON[28146]: (root) CMD (python /home/python_prj/main.py)
Run Code Online (Sandbox Code Playgroud)

没有别的.

main.py脚本从其他模块调用一些方法python_prj,这有关系吗?

有人可以帮帮我吗?

python crontab

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

使用imshow时自定义滴答自动缩放?

我试图imshow使用以下代码更改x轴上的刻度值:

import matplotlib.pyplot as plt
import numpy as np

def scale_xaxis(number):
    return(number+1001)

data = np.array([range(10),range(10,20)])
fig = plt.figure(figsize=(3,5))
ax = fig.add_subplot(111)
ax.imshow(data,aspect='auto')
ax.autoscale(False)
xticks = ax.get_xticks()
ax.xaxis.set_ticklabels(scale_xaxis(xticks))
plt.savefig("test.png")
Run Code Online (Sandbox Code Playgroud)

得到的图像http://ubuntuone.com/2Y5ujtlEkEnrlTcVUxvWLU

然而,x-ticks重叠并具有"非圆形"值.matplotlib有什么方法可以自动执行此操作吗?通过使用set_ticklabels或其他方式?

python matplotlib

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

如何在内存受限系统上下载带有cx_Oracle的巨大Oracle LOB?

我正在开发一个系统的一部分,其中进程限制在大约350MB的RAM; 我们使用cx_Oracle从外部系统下载文件进行处理.

外部系统将文件存储为BLOB,我们可以抓住它们执行以下操作:

# ... set up Oracle connection, then
cursor.execute(u"""SELECT   filename, data, filesize
                   FROM    FILEDATA
                   WHERE   ID = :id""", id=the_one_you_wanted)
filename, lob, filesize = cursor.fetchone()

with open(filename, "w") as the_file:
    the_file.write(lob.read())
Run Code Online (Sandbox Code Playgroud)

lob.read()MemoryError当我们点击一​​个大于300-350MB的文件时,显然会失败,所以我们尝试过这样的东西,而不是一次性读取所有内容:

read_size = 0
chunk_size = lob.getchunksize() * 100
while read_size &lt; filesize:
    data = lob.read(chunk_size, read_size + 1)
    read_size += len(data)
    the_file.write(data)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我们仍然MemoryError经历了几次迭代.从时间开始lob.read(),以及我们最终获得的内存不足情况,看起来好像每次都lob.read()从数据库中提取(chunk_size + read_size)字节.也就是说,即使缓冲区相当小,读取也需要O(n)时间和O(n)存储器.

为了解决这个问题,我们尝试过类似的方法:

read_size = 0
while read_size &lt; filesize:
    q = u'''SELECT dbms_lob.substr(data, 2000, …
Run Code Online (Sandbox Code Playgroud)

python oracle cx-oracle blob lob

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

Pymongo - 如何获取作为代表集的python字典的状态

我是mongo的新手,我正在使用pymongo.我发现pymongo的文档到处都是.

1)我有一个代表.从mongo shell,如果我在下面运行,我得到了我需要的东西.

sudo mongo 111.111.111.111 --eval "printjson(rs.status())"
MongoDB shell version: 2.2.1
connecting to: 111.111.111.111/test
{
    "set" : "hey",
    "date" : ISODate("2012-11-10T11:47:58Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "111.111.111.111:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 69189,
            "optime" : Timestamp(1352478921000, 1),
            "optimeDate" : ISODate("2012-11-09T16:35:21Z"),
            "self" : true
        }
    ],
    "ok" : 1
}
Run Code Online (Sandbox Code Playgroud)

我需要从pymongo获取该信息.

1)我连接到主要.我得到none但是根据上面的节点是主要的:

c = ReplicaSetConnection("111.111.111.111:27017", replicaSet='heythat')
print c.primary
None
Run Code Online (Sandbox Code Playgroud)

2)我想运行c.command("status")但不支持该操作.

那么,如何使用pymongo返回主要,并返回状态作为Python字典?

python mongodb pymongo

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