Файл Bookmarks.plist - как Safari хранит закладки. Как подсчитать все URLStrings?итерирование всех закладок в Bookmarks.plist
я могу получить файл закладок с:
BOOKMARKS_PLIST = '~/Library/Safari/Bookmarks.plist
преобразовать его в текст из двоичного с:
converted = subprocess.call(['plutil', '-convert', 'xml1', bookmarksFileCopy])
и, например, получить доступ к одной записи с:
'print plist [' Children '] [5] [' Children '] [1] [' Children '] [2]'
Кажется, я должен использовать рекурсию, чтобы спуститься по «листьям дерева», но я не могу получить синтаксис прямо в python. Как вы можете сказать, я новичок.
EDIT: Спасибо, Хосе. Хотя ваше решение дало ошибку, я описал ниже, я получил эту работу:
import plistlib
import subprocess
import os
def countURLStrings(plistDict):
childURLCounts = 0
if 'Children' in plistDict.keys():
for child in plistDict['Children']:
childURLCounts += countURLStrings(child)
if 'URLString' in plistDict.keys():
childURLCounts += 1
print plistDict.URLString
return childURLCounts
BOOKMARKS_PLIST = '/Users/me/Desktop/Safari-20150403175048/Bookmarks.plist'
converted = subprocess.call(['plutil', '-convert', 'xml1', BOOKMARKS_PLIST])
pl = plistlib.readPlist(BOOKMARKS_PLIST)
ct = countURLStrings(pl)
print ct
И в качестве бонуса, это итерированная версия быстрее, чем рекурсии я попробовал и потерпел неудачу в.
Спасибо за ваш вклад (хотя я не знаю, почему вы дали мне -1; Я все еще ноб). Я попробовал второй образец кода (так как я использую anaconda v 2.2 (он использует python2.79). Не было биплиперного пакета, поэтому я установил его с помощью pip. Затем я получаю эту ошибку: – aquagremlin
Файл «/ Users/me/PyProjects/pylisterP/pylister3.py ", строка 15, в pl = biplist.readPlist (fp) Файл" /Users/me/anaconda/lib/python2.7/site-packages/biplist/__init__.py ", строка 126 в readPlist повышение InvalidPlistException (е) biplist.InvalidPlistException: не хорошо сформирован (недействительный маркер): строка 1, столбец 0 –
aquagremlin
Сожалеем о плохом форматировании, я не могу получить новые линии или подсветку кода в комментариях – aquagremlin