小编WoJ*_*WoJ的帖子

为什么python XML解析速度不一致?

我正在解析一个大的(12 GB)XML文件,该文件由大约135k或多或少类似的记录组成(这是一个nmap转储).我注意到解析速度不一致,解析类似记录的时间变化很大.

以下按比例缩小的代码输出解析每1%记录所需的时间:

from xml.etree.ElementTree import iterparse
import time
nrhosts = 0
previous = time.time()
context = iterparse("test.xml", events=("start", "end"))
context = iter(context)
event, root = context.next()
for event, elem in context:
    if event == 'end' and elem.tag == "host":
        root.clear()   # clean up memory
        nrhosts += 1
        if nrhosts % 1349 == 0:  # hardcoded to estimate the % as there are ~135k of records
            now = time.time()
            print nrhosts // 1349, now - previous  
            previous = now
Run Code Online (Sandbox Code Playgroud)

这给出了: …

python xml performance parsing

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

如何在请求调用中添加持久标头?

这是可能的添加自定义标题requests电话,但有没有办法让它持续的,即必须添加到每个呼叫,而无需每次都指定了头?

python python-requests

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

如何读取/dev/log?

我想syslog通过阅读直接访问来自 Python 的消息/dev/log

我(非常有限)的理解是,正确的方法是从那里读取是绑定数据报套接字。

import socket

sock = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
sock.bind('/dev/log')
sock.listen(1)
while True:
    data, addr = sock.recvfrom(1024)
    print(data)
Run Code Online (Sandbox Code Playgroud)

显然/dev/log正在使用:

Traceback (most recent call last):
  File "readlog.py", line 4, in <module>
    sock.bind('/dev/log')
OSError: [Errno 98] Address already in use
Run Code Online (Sandbox Code Playgroud)

我应该如何/dev/log从 Python 中读取?


编辑:根据@Barmar 的评论 - 只有一个进程可以访问,/dev/log以便该部分清晰,设备在读取之前必须是干净的。sudo lsof /dev/log不显示任何东西。

围绕这个主题的 Java 线程中的一个答案提到syslog应该在之前关闭。我也试过,lsof | grep "/dev/log"是空的,但我还是得到了错误。
是不是可以有多个进程读取/dev/log

python unix linux datagram python-3.x

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

是否正确的YAML文件足以获得正确的ansible playbook,语法错误除外?

我有一个ansible剧本引发了一个错误(像往常一样有可怕的消息):

ERROR! unexpected parameter type in action: <class 'ansible.parsing.yaml.objects.AnsibleSequence'>

The error appears to have been in '/root/myplaybook.yml': line 17, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

# configure rsyslog
- name: configure rsyslog to expose events on port 42000
  ^ here
Run Code Online (Sandbox Code Playgroud)

有问题的一行是我在本剧本和其他剧本中的其他专栏:

# prepare environment
# configure rsyslog
- name: configure rsyslog to expose events on port 42000
  lineinfile:
    - create: yes
    - dest: /etc/rsyslog.d/expose-42000.conf
    - …
Run Code Online (Sandbox Code Playgroud)

yaml ansible ansible-playbook

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

如何确保工具提示停留在浏览器可见区域内?

我正在学习如何根据w3schools教程创建工具提示。

我面临的一个问题是,当悬停的文字靠近浏览器边缘并且工具提示显示在可见区域之外时,工具提示的可见性。

是否有防止这种情况的标准方法(欢迎任何方式(CSS,JS,...))?
我现在的想法是根据屏幕的大小和工具提示锚点的位置来计算工具提示的坐标-但我想避免重新发明轮子。

向上或向下扩展的工具提示就足够了- 也许可以进行“完全可见”的检查以决定方向?这类似于SO中的工具提示中的内容:

在此处输入图片说明

在此处输入图片说明

html javascript css

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

Vue中如何通过Id获取元素?

我想Element在 Vue 中使用以下方法获得外部getElementById()

new Vue({
  el: "#vue",
  data: {
    helloElement: document.getElementById('hello')
  }
})
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.js"></script>
<div id="hello">
  hello
</div>
<div id="vue">
  {{helloElement}}
</div>
Run Code Online (Sandbox Code Playgroud)

这给我带来了一个空的Element,但不是null- 这表明查询部分成功(发现了一些东西)。

这实际上是一个针对我面临的更普遍问题的 POC:能够从 Vue 组件中获取外部Element(例如,容器)(这给我带来了一个,文档说这是找不到元素时的响应)。divnull

是否可以从 Vue 对象或组件内部查询ElementDOM 中存在的外部对象?

javascript vue.js vue-component

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

如何在 vscode 中重新格式化 Vue.js 组件?

我使用 Visual Studio Code 编写 Vue.js 组件,并且需要重新格式化该组件的代码。

我没有找到任何内置插件,插件的第一选择是vue-buetify在安装后通知

扩展中有很多bug,请不要使用,更好的选择是vetur

然后我通过安装 Vetur 来尝试它,但没有任何地方我可以看到一个选项来美化当前在编辑器中的代码。该Shift+ Alt+F 命令没有效果。

如何真正美化(重新格式化)Vue 组件的代码?

code-formatting vue.js visual-studio-code vue-component vetur

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

如何展平嵌套的 div 以在 CSS 网格中显示它们?

我从一个应该是两列宽的对象生成一个表(使用 vue.js)。每一列都来自对象的键和值。这等效于以下实际的 HTML:

<div id="table">
  <div>
    <div>
      this is something long on the first row
    </div>
    <div>
      short 1st row
    </div>
  </div>
  <div>
    <div>
      wazaa 2nd row
    </div>
    <div>
      wazii 2nd row
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我使用 CSS 网格将它们格式化div为 2x2 网格,我希望是

this is something long on the first row | short 1st row
wazaa 2nd row                           | wazii 2nd row
Run Code Online (Sandbox Code Playgroud)

执行此操作的代码:

<div id="table">
  <div>
    <div>
      this is something long on the first row
    </div>
    <div>
      short 1st row
    </div> …
Run Code Online (Sandbox Code Playgroud)

html css css-grid

6
推荐指数
2
解决办法
1963
查看次数

如何使用 loguru 设置最低日志记录级别?

我想在开发和生产中使用不同的日志记录级别。为此,我需要在程序的早期设置触发日志的最低级别。默认是输出所有严重性:

from loguru import logger as log

log.debug("a debug log")
log.error("an error log")

# output
# 2022-09-15 16:51:23.325 | DEBUG    | __main__:<module>:3 - a debug log
# 2022-09-15 16:51:23.327 | ERROR    | __main__:<module>:4 - an error log
Run Code Online (Sandbox Code Playgroud)

文档中有一个更改现有处理程序的级别部分,其中指出:

一旦添加了处理程序,实际上就无法更新它。(...)

最直接的解决方法是使用remove()您的处理程序,然后add()使用更新的级别参数重新处理它。

我的问题是我没有添加任何东西,所以没有什么可以删除的。我也无法修改log。所以我该怎么做?

python loguru

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

如何向 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万
查看次数