【问题标题】:Python 3 parsing iTunes library plist file using plistlibPython 3 使用 plistlib 解析 iTunes 库 plist 文件
【发布时间】:2012-12-29 14:46:06
【问题描述】:

我正在尝试解析一个 iTunes 媒体库文件,它是一个使用 python 和 plistlib 的 plist 文件。我写了一个简单的python脚本:

import plistlib

plist = plistlib.readPlist('tunes.xml')
print(plist['Tracks'])

但是当我尝试运行它时,第 3 行出现错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 21970: ordinal not in range(128)

我尝试使用 utf-8 编码加载文件转换为 bytearray 并使用 plistlib.readPlistFromBytes 但仍然出现错误

解决此问题的最佳方法是什么?

【问题讨论】:

  • 哪个语句出现错误(上面提到的“第 3 行”)?你在什么环境下运行它? (OS X,Windows - 终端会话,IDLE)
  • print(plist['Tracks']) 是发生错误的地方。我正在使用 Linux(Arch Linux)。
  • 在 OS X + Python 3.3 或 2.7 上,您的代码无需编解码器支持即可直接运行。在 Python 2.6 下,我需要编解码器。我怀疑它在 Python / Linux 组合中......

标签: python python-3.x plist


【解决方案1】:

您运行它的终端会话或控制台可能未设置为兼容 UTF-8 的 locale。请参阅https://wiki.archlinux.org/index.php/Locale 了解更多信息。例如,在美国英语语言环境中:

export LANG=en_US.UTF-8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2019-03-23
    相关资源
    最近更新 更多