我想从这里获取“最新”版本标签的值: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内部使用此代码(我正在尝试使用它来制作UltiSnips片段),使得在代码运行完后 整个vim极其缓慢。
是什么导致我刚添加^^代码时程序变慢?
答案 0 :(得分:0)
我不知道这是否可以解决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