小编WoJ*_*WoJ的帖子

Python:我可以假设从左到右测试条件并在遇到时停止吗?

我将使用followig代码作为我的问题的参考:

>>> a = 10
>>> if a or b:
...     print(a)
...
10
>>> if False and b:
...     print(a)
...
>>> if a and b:
...     print(a)
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
Run Code Online (Sandbox Code Playgroud)

我将有条件地测试案例:

  • a是定义的,b可能定义也可能不定义
  • a是假而b没有定义,或者 aTrueb定义

我将if a or b:用于第一种情况和if a and b:第二种情况.根据我上面的测试,它可以工作,但这假设i)条件的解析是从左到右,ii)它在条件状态已知时停止

这是Python的记录行为,这些正确的假设是什么?

python conditional-statements

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

如何使用CherryPy捕获所有异常?

我使用CherryPy运行非常简单的Web服务器。它旨在处理GET参数,如果参数正确,请对其进行处理。

import cherrypy

class MainServer(object):
    def index(self, **params):
        # do things with correct parameters
        if 'a' in params:
            print params['a']

    index.exposed = True

cherrypy.quickstart(MainServer())
Run Code Online (Sandbox Code Playgroud)

例如,

http://127.0.0.1:8080/abcde:

 404 Not Found

The path '/abcde' was not found.

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\cherrypy\_cprequest.py", line 656, in respond
    response.body = self.handler()
  File "C:\Python27\lib\site-packages\cherrypy\lib\encoding.py", line 188, in __call__
    self.body = self.oldhandler(*args, **kwargs)
  File "C:\Python27\lib\site-packages\cherrypy\_cperror.py", line 386, in __call__
    raise self
NotFound: (404, "The path '/abcde' was not found.")
Powered …
Run Code Online (Sandbox Code Playgroud)

python exception-handling cherrypy

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

如何向 tkinter 标签添加左边框或右边框

以下代码

import Tkinter as tk

root = tk.Tk()
labelA = tk.Label(root, text="hello").grid(row=0, column=0)
labelB = tk.Label(root, text="world").grid(row=1, column=1)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

产生

在此处输入图片说明

如何向 中添加部分边框,Label以便我拥有

在此处输入图片说明

我看到那borderwidth=是一个可能的选择Label,但它所处理的四个边界。

注意:问题不是关于填充单元格(这是以前在重复评论中链接的答案的本质)

python tkinter

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

如何初始化UnorderedBulkOp()?

新来MongoDB的,我试图优化批量写入数据库.但是我不明白如何初始化Bulk()操作.

我的理解是,由于插入将在集合上完成,因此initializeUnorderedBulkOp()应该初始化(或者更确切地说"在什么"上):

以下代码涵盖了我能想到的所有案例:

import pymongo

conn = pymongo.MongoClient('mongodb.example.com', 27017)
db = conn.test
coll = db.testing

# tried all of the following
# this one does not make much sense to me as I insert to a collection, added for completeness
bulk = db.initializeUnorderedBulkOp()
# that one seems to be the most reasonable to me   
bulk = coll.initializeUnorderedBulkOp()
# that one is from http://blog.mongodb.org/post/84922794768/mongodbs-new-bulk-api   
bulk = db.collection('testing').initializeUnorderedBulkOp()

# the staging and execution
# bulk.find({'name': 'hello'}).update({'name': …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

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

如何调试日期的匹配?

我正在匹配诸如的事件

[Sun Jan 11 10:43:35 2015][3205.51466981] user idp : testing 10.234.22.220 (10.234.22.220) [61673782]
Run Code Online (Sandbox Code Playgroud)

%{SYSLOG5424SD:timestamp}%{GREEDYDATA}user %{WORD:user} : testing %{HOST:ip}
Run Code Online (Sandbox Code Playgroud)

它有效,我看到elasticsearch/kibana中的各个领域.具体timestamp在上面的例子中匹配[Sun Jan 11 10:43:35 2015]

我现在想要使用这个匹配,date以便拥有正确的@timestamp.

我试过用 filter

    date
    {
      match =>  [ "timestamp", "SYSLOG5424SD" ]
    }
Run Code Online (Sandbox Code Playgroud)

但这会导致logstash崩溃,并提示输出错误报告 - 我打开了一张票.

与此同时,我尝试通过明确匹配模式

    date
    {
      match =>  [ "timestamp", "\[EEE MMM dd HH:mm:ss y\]" ]
    }
Run Code Online (Sandbox Code Playgroud)

正如您所怀疑的那样 - 它从不匹配,@timestamp设置为logstash记录事件的时间.

你能发现问题,还是有一种聪明的方法来调试这种情况?

jodatime logstash

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

如何在脚本中列出与导入相对应的PyPI包的名称?

有没有办法列出与脚本中导入的模块相对应的PyPi包名?

例如,scapy3k我需要使用导入模块(这是它的名字)

import scapy.all
Run Code Online (Sandbox Code Playgroud)

但要安装的实际包是scapy-python3.后者是我希望从import声明中找到的内容中提取的内容(我不关心它的名称 - scapy3k在这种情况下).

还有其他一些例子(现在让我逃避),这些例子的pip install名称与import之后使用的名称完全不同.

python import installation pypi

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

为什么docker容器中的shell会显示主机中的dmesg内容?

我有一个在Ubuntu yakkety上运行Debian jessie的docker容器。

在docker内部(ssh例如,通过docker连接)时,我与主机隔离(这是预期的)。但是,dmesg我意识到这向我显示了主机而不是容器的消息。它如何访问其主机的信息?

docker容器的配置不是特殊的(除了它使用的是不同于的特定桥docker0),尤其是它不会在任何特权模式下运行("Privileged": false如下所示):

root@srv ~# docker inspect minecraft-1-8
[
    {
        "Id": "748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e",
        "Created": "2016-12-01T15:35:05.287672787Z",
        "Path": "/usr/bin/supervisord",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 28650,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2016-12-15T18:37:08.409564695Z",
            "FinishedAt": "2016-12-15T18:37:07.457274028Z"
        },
        "Image": "sha256:78a2f88d47e29523503c2196ed2faaa3d1039d948d73987edc03b2abd338595d",
        "ResolvConfPath": "/var/lib/docker/containers/748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e/hostname",
        "HostsPath": "/var/lib/docker/containers/748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e/hosts",
        "LogPath": "/var/lib/docker/containers/748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e/748cfdfbf3fb5526cb7151cbc0857117af3c7bd8ab9e086c4f2efb897290d66e-json.log",
        "Name": "/minecraft-1-8",
        "RestartCount": 0,
        "Driver": "overlay",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": …
Run Code Online (Sandbox Code Playgroud)

privileges containers elevated-privileges docker

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

是否可以捕获请求的所有异常?(一般来说,对于一个模块)

我有一些代码可以进行调用requests.get(),但可能会以各种方式失败。我想捕获requests异常,但不关心为什么调用失败。

我想避免像这样的代码

try:
    r = requests.get(url)
except:
    pass
Run Code Online (Sandbox Code Playgroud)

因为它可能会捕获不requests相关的异常(在上面的情况下,这几乎不会是这种情况,但如果有更多的代码,这是可能的)。

requests例外情况已记录在案,但我不想列出所有例外情况。有没有办法捕获所有异常,某种requests异常通配符?(更一般地说 - 对于模块提供的异常)

我也可以去做类似的事情

try:
    r = requests.get(url)
except Exception as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)

但我想避免分析e以过滤掉requests异常。

注意:这不是关于处理除一个异常之外的所有异常的问题的重复- 我的目标是一整类相关异常(并且如果其他东西引发异常,则允许崩溃,在我的情况下这将是一个错误)

python exception python-3.x python-requests

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

是否存在与选择数据列表 &lt;option&gt; 相关的事件?

我有一个<input>字段中的(动态)选择列表:

<input list="choices">
<datalist id="choices">
<option>one</option>
<option>two</option>
</datalist>
Run Code Online (Sandbox Code Playgroud)

在做出选择后是否会立即触发事件<option>(如果这很重要,我想在 Vue.js 中捕获/使用它)。这将是在以下场景中单击鼠标左键时:

在此处输入图片说明

html javascript html-input dom-events html-datalist

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

如何为所有处理程序设置相同的日志记录格式?

我正在使用 在我的每个处理程序上.setFormatter()设置相同的logging.Formatter()内容。

有没有办法设置全局默认格式?

或者 - 是否可以迭代已经通过.addHandler()记录器添加的处理程序?

另一个问题提到了格式是什么,但没有提到如何设置它。

python logging python-3.x

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