我正在尝试在 Mac OS El Capitan 系统上的 Python 2.7 下使用 plistlib 处理 iTunes plist。问题是 get('Tracks') 返回 3,006 个显然丢失了子键的值。如果我的目标是定位和更改特定轨道的数据而不是写回 plist,我该如何处理?
正如在上一段中所隐藏的那样,我需要帮助的是:打印轨道列出所有子键值,而不是子键本身。鉴于并非所有键都被隔离存在,我如何检索特定轨道的键值?
这是我的测试代码:
import plistlib as pl
plist = pl.readPist('/Users/bryandunphy/Music/iTunes HQR/iTunes Library.xml')
tracks = pl.get('Tracks')
print tracks
这是一个示例数据记录,我相信它包含所有可能的子键(如果键是空字符串、False 或数字 0,则不存在键):
<key>2655</key>
<dict>
<key>Track ID</key><integer>2655</integer>
<key>Size</key><integer>8558199</integer>
<key>Total Time</key><integer>210120</integer>
<key>Disc Number</key><integer>1</integer>
<key>Disc Count</key><integer>2</integer>
<key>Track Number</key><integer>5</integer>
<key>Track Count</key><integer>17</integer>
<key>Date Modified</key><date>2016-12-15T02:13:07Z</date>
<key>Date Added</key><date>2016-12-14T11:32:46Z</date>
<key>Bit Rate</key><integer>320</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Persistent ID</key><string>7BD213A791587573</string>
<key>Track Type</key><string>File</string>
<key>File Type</key><integer>1295270176</integer>
<key>File Folder Count</key><integer>5</integer>
<key>Library Folder Count</key><integer>1</integer>
<key>Name</key><string>Born To Be Wild</string>
<key>Artist</key><string>Steppenwolf</string>
<key>Album Artist</key><string>Steppenwolf</string>
<key>Album</key><string>Born To Be Wild: A Retrospective</string>
<key>Genre</key><string>Rock</string>
<key>Kind</key><string>AAC audio file</string>
<key>Sort Album Artist</key><string>Steppenwolf</string>
<key>Location</key><string>file:///Users/bryandunphy/Music/iTunes%20HQR/iTunes%20Media/Music/Steppenwolf/Born%20To%20Be%20Wild_%20A%20Retrospective/1-05%20Born%20To%20Be%20Wild.m4a</string>
</dict>
记录上方的文件顶部是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Major Version</key><integer>1</integer>
<key>Minor Version</key><integer>1</integer>
<key>Application Version</key><string>12.5.4.42</string>
<key>Date</key><date>2017-01-02T02:41:51Z</date>
<key>Features</key><integer>5</integer>
<key>Show Content Ratings</key><true/>
<key>Library Persistent ID</key><string>4FA8621533B66A9E</string>
<key>Tracks</key>
<dict>