gpt4 book ai didi

python:下载和缓存 XML 文件 - 如何处理编码声明?

转载 作者:行者123 更新时间:2023-12-01 03:54:20 28 4
gpt4 key购买 nike

from urllib.request import urlopen
from lxml import objectify

我正在尝试编写一个程序,将 XML 文件下载到缓存中,然后使用 objectify 打开它们。如果我使用 urlopen() 下载文件,那么我可以使用 objectify.fromstring() 读取它们:

r = urlopen(my_url)
o = objectify.fromstring(r.read())

但是,如果我下载它们并将它们写入文件,我最终会在文件顶部得到 objectify 不喜欢的编码声明。也就是说:

# download the file
my_file = 'foo.xml'
r = urlopen(my_url)

# save locally
with open(my_file, 'wb') as fp:
fp.write(r.read())

# open saved copy
with open(my_file, 'r') as fp:
o1 = objectify.fromstring(fp.read())

导致 ValueError:不支持带有编码声明的 Unicode 字符串。请使用字节输入或不声明的 XML 片段。

如果我使用 objectify.parse(fp) 那么效果很好 - soo--我可以检查并更改所有客户端代码以使用 parse() ,但我觉得这不是正确的做法。我在本地存储了其他 XML 文件,.fromstring() 工作得很好——根据粗略的审查,它们似乎具有 utf-8 编码。

我只是不知道这里正确的分辨率是什么 - 我应该在保存文件时更改编码吗?我应该去掉编码声明吗?我应该用 try.. except ValueError 子句填充我的代码吗?请指教。

最佳答案

文件需要以二进制模式而不是文本模式打开。

open(my_file, 'rb') # b stands for binary

按照异常的建议:...请使用字节输入...

关于python:下载和缓存 XML 文件 - 如何处理编码声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37758231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com