从在线xm获取价值

2024-10-02 16:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从这里获取'latest'版本标记的值:https://papermc.io/repo/repository/maven-public/com/destroystokyo/paper/paper-api/maven-metadata.xml

我试着用这条Python:

import urllib.request
from xml.etree import ElementTree

opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

data = opener.open('https://papermc.io/repo/repository/maven-public/com/destroystokyo/paper/paper-api/maven-metadata.xml').

root = ElementTree.fromstring(data)

versioning = root.find("versioning")
latest = versioning.find("latest")
snip.rv = latest.text

问题是,在vim内部使用它(我正试图用它制作多剪接片段)会使整个vim在代码运行完成后变得非常缓慢

是什么导致我的程序在添加代码时变慢的


Tags: httpsiocomapirepositoryrepoxmlpublic
1条回答
网友
1楼 · 发布于 2024-10-02 16:33:07

我不知道这是否能解决vim中的性能问题,但是由于其中的错误,代码没有为我运行

opener.open返回一个类似文件的对象,因此应该使用 ElementTree.parse而不是ElementTree.fromstring(实际上在opener.open(...)之后有一个尾随点,所以我不知道你是否漏掉了read()。在这种情况下,返回值实际上是一个字符串)

除此之外,您可以尝试关闭opener以查看是否释放了一些资源(或者使用with

我附上一个改进代码的示例:

import urllib.request
from xml.etree import ElementTree

opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]

with opener.open('https://papermc.io/repo/repository/maven-public/com/destroystokyo/paper/paper-api/maven-metadata.xml') as data:
    root = ElementTree.parse(data)
    latest = root.find("./versioning/latest")
    snip.rv = latest.text

相关问题 更多 >