Python plist 解析器 IOError: [Errno 63] 文件名过长
我的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
这个函数会帮你完成打开和读取的工作。