Python plist 解析器 IOError: [Errno 63] 文件名过长

1 投票
2 回答
3541 浏览
提问于 2025-04-16 18:20

我的Python plist解析器不喜欢我那个很长的plist格式字符串。

plist_data = plistlib.readPlist(plistString)

plistString其实就是我打开的文件的内容。奇怪的是,把输入文件放进readPlist函数里可以正常工作,但我在Python里还得对那个文件做一些额外的格式处理。

我运行上面的代码时,控制台上出现了一个IOError: [Errno 63]的错误。我不太确定怎么避免这个问题?我猜这个函数在寻找“原始”的输入,而不是一个字符串。我该怎么骗过它呢?

2 个回答

2

plistlib.readPlist 这个函数需要的是文件或者文件名,而不是文件的内容。所以你遇到这个错误也就不奇怪了:

#define ENAMETOOLONG    63      /* File name too long */

你可以试试 plistlib.readPlistFromBytes(data),或者使用 StringIO 把你的字符串当作文件来处理。

4

如果你想把一个字符串当成文件来读取,可以使用StringIO

fakeFile= StringIO.StringOI( plistString )
plist_data = plistlib.readPlist(fakeFile)

其实最好不要自己去打开和读取pList文件。因为plistlib.readPlist这个函数会帮你完成打开和读取的工作。

撰写回答