我试图找到一种访问plist文件的方法:/Library/Preferences/com.apple.iPod.plist以访问其中的序列号。
这是我当前的代码-
import os
import plistlib
fileName=os.path.expanduser('/Users/Ryan/Library/Preferences/com.apple.iPod.plist')
pl=plistlib.readPlist(fileName)
for left, right in pl.items():
for values in right.values():
print(values['Serial Number'])
我一直在获取结果,但也会弹出一些快速错误。我得到这个:
plist.py:8: DeprecationWarning: The readPlist function is deprecated, use load() instead pl=plistlib.readPlist(fileName)
还有这个:
File "plist.py", line 16, in <module>
for values in right.values():
AttributeError: 'bool' object has no attribute 'values'
我猜想使用load函数非常简单,尽管我很难通过网上找到的教程来解决它,以满足我的需要。
关于布尔AttributeError,我不知道我在做什么错。
谢谢!
答案 0 :(得分:0)
要摆脱折旧错误,请将包含readPlist
的行替换为
with open(fileName, 'rb') as f:
pl = plistlib.load(f)
您的第二个问题似乎是由于plistlib的变化引起的:
在3.7版中进行了更改:结果中的Dict值现在是普通dict。您不再可以使用属性访问来访问这些词典的项目。
我有一个类似的问题:AttributeError: 'dict' object has no attribute 'children'
通过用someObj.children[:]
替换someObj['children']
的出现而得到解决。我想您对right.values()
的调用可能会发生类似的情况,但是如果没有您期望的plist的实际示例,很难说出来。