奇怪的Python错误交错(ID3)编码错误来自cron,但不是来自命令lin

2024-06-16 11:22:18 发布

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

我有一个程序可以扫描我的MP3并创建一个信息数据库。源位于github。在

当我从命令行运行update.sh脚本时,它可以正常工作。当我将它作为cron作业运行时,我会看到以下错误(具体代码会有所不同):

'utf-8' codec can't encode character '\udce2' in position 37: surrogates not allowed

看一下日志,我看到为曲目标题打印的数据略有不同。从命令行调用时,我看到:

DEBUG:root:delegating artist Wendy Carlos, track "Jesu, Joy of Man’s Desiring", BWV 147 No. 10 to finder

但当从cron运行时,我看到:

^{pr2}$

在这两种情况下,“track”后面的文本都是来自stagger库的ID3标记(标签标题). 在

现在,stagger是一个纯Python库,它似乎对相同的输入给出了不同的结果。所以,虽然我可以说这是一个bug,让他们自己去解决,但我想在这个环境中,命令行和cron之间有些不同。但是什么?在这两种情况下,python都是从virtualenv调用的(参见上面链接的脚本)。在

所以我的问题是-什么样的事情会导致这种情况?不可能是魔法。必须有一个合理的解释。。。在

[同样,在本例中,它是根据kid3的v2.4id3]

[而且,公平地说,还不清楚是Stagger导致了错误。它可能返回相同的值,但python在这两种情况下处理方式不同。]


Tags: 命令行程序github脚本信息数据库标题sh