小编jay*_*y_t的帖子

更新不同深度的嵌套字典的值

我正在寻找一种方法来更新dict dictionary1与dict更新的内容wihout覆盖levelA

dictionary1={'level1':{'level2':{'levelA':0,'levelB':1}}}
update={'level1':{'level2':{'levelB':10}}}
dictionary1.update(update)
print dictionary1
{'level1': {'level2': {'levelB': 10}}}
Run Code Online (Sandbox Code Playgroud)

我知道更新会删除level2中的值,因为它正在更新最低密钥level1.

鉴于dictionary1和update可以有任何长度,我怎么能解决这个问题呢?

python

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

RabbitMQ,Pika和重新连接策略

我正在使用Pika处理来自RabbitMQ的数据.由于我似乎遇到了不同类型的问题,我决定编写一个小型测试应用程序来查看如何处理断开连接.

我写了这个测试应用程序,其中包括:

  1. 连接到Broker,重试直到成功
  2. 连接时创建队列.
  3. 使用此队列并将结果放入python Queue.Queue(0)
  4. 从Queue.Queue(0)获取项目并将其生成回代理队列.

我注意到的是2个问题:

  1. 当我从一台连接到另一台主机上的rabbitmq的主机(在vm内)运行我的脚本时,这些脚本随机退出而不会产生错误.
  2. 当我在安装RabbitMQ的同一主机上运行我的脚本时,它运行正常并继续运行.

这可能是因为网络问题,数据包丢失,但我发现连接不是很强大.

当脚本在RabbitMQ服务器上本地运行并且我杀死RabbitMQ时,脚本退出时出现错误:"ERROR pika SelectConnection:3:104上的套接字错误"

所以看起来我不能让重新连接策略按原样运行.有人可以查看代码,看看我做错了什么?

谢谢,

松鸦

#!/bin/python
import logging
import threading
import Queue
import pika
from pika.reconnection_strategies import SimpleReconnectionStrategy
from pika.adapters import SelectConnection
import time
from threading import Lock

class Broker(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.logging = logging.getLogger(__name__)
        self.to_broker = Queue.Queue(0)
        self.from_broker = Queue.Queue(0)
        self.parameters = pika.ConnectionParameters(host='sandbox',heartbeat=True)
        self.srs = SimpleReconnectionStrategy()
        self.properties = pika.BasicProperties(delivery_mode=2)

        self.connection = None
        while True:
            try:
                self.connection = SelectConnection(self.parameters, self.on_connected,  reconnection_strategy=self.srs)
                break
            except Exception as err:
                self.logging.warning('Cant …
Run Code Online (Sandbox Code Playgroud)

python rabbitmq pika

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

使用Validator(或类似的东西)进行python数据结构验证

我正在以json文档的形式处理数据输入.这些文档需要具有某种格式,如果它们不符合要求,则应忽略它们.我目前正在使用凌乱的'if thens'列表来检查json文档的格式.

我一直在尝试使用不同的python json-schema库,这可以正常工作,但我仍然可以使用模式中未描述的密钥提交文档,这对我来说没用.

虽然我期望它,但此示例不会生成异常:

#!/usr/bin/python

from jsonschema import Validator
checker = Validator()
schema = {
    "type" : "object",
    "properties" : {
        "source" : {
            "type" : "object",
            "properties" : {
                "name" : {"type" : "string" }
            }
        }
    }
}
data ={
   "source":{
      "name":"blah",
      "bad_key":"This data is not allowed according to the schema."
   }
}
checker.validate(data,schema)
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的:

  • 我是否忽略了架构定义中的某些内容?
  • 如果没有,是否还有另一种轻量级方法来解决这个问题

谢谢,

松鸦

python validation json jsonschema

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

没有root权限的python中的pam身份验证

我正在寻找一种让我的python程序通过pam处理身份验证的方法.我正在使用http://code.google.com/p/web2py/source/browse/gluon/contrib/pam.py这个,只要我的python程序以root身份运行就不太理想了我的看法.

如何在不需要root权限的情况下使用pam进行用户名/密码验证?

python authentication pam

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

将每个类存储在一个单独的文件python中

我正在研究组织我的模块和课程.我一直在相关模块中收集相关课程,所以我可以做以下事情:

from vehicles.car import engine
Run Code Online (Sandbox Code Playgroud)

在目录工具中有一个名为car的文件,其中包含类引擎.明确.

现在我正在研究我可以在文件中存储类的可能性.所以我可以这样做:

from filters import air
Run Code Online (Sandbox Code Playgroud)

air class是一个独立的文件.然而,我不清楚如何将一个名为air的类存储到其自己的文件air.py中

如果filters.py包含我的所有类,则此导入将起作用,但这不是我想要的.

任何提示或指示?

python import module

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

如何处理用户提供的公式?

我有一个字典,其中包含通过Web应用程序可用的一组键值:我想处理用户提供的公式,如:((value1 + value3)/ value4)*100

什么是最简单的方法来计算公式计算匹配值与字典中的值?

考虑这个例子:

#!/usr/bin/python
values={'value1':10,'value2':1245,'value3':674365,'value4':65432,'value5':131}
formula=raw_input('Please enter formula:')
Run Code Online (Sandbox Code Playgroud)

如果我提供公式'((value1 + value3)/ value4)*100',我如何将value1等映射到字典中的map1并计算结果?

干杯,

python

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

标签 统计

python ×6

authentication ×1

import ×1

json ×1

jsonschema ×1

module ×1

pam ×1

pika ×1

rabbitmq ×1

validation ×1