6 votes

DeprecationWarning avec readPlist & AttributeError

J'essaie de trouver un moyen d'accéder au fichier plist : /Library/Preferences/com.apple.iPod.plist pour accéder aux numéros de série qu'il contient.

Voici mon code actuel--

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'])

Je continue à obtenir les résultats mais des erreurs rapides apparaissent également. J'obtiens celle-ci :

plist.py:8: DeprecationWarning: The readPlist function is deprecated, use load() instead pl=plistlib.readPlist(fileName)

et aussi celui-ci :

  File "plist.py", line 16, in <module>
    for values in right.values():
   AttributeError: 'bool' object has no attribute 'values'

Je suppose que l'utilisation de la fonction de chargement est assez simple, bien que j'aie eu du mal à la comprendre en utilisant les tutoriels que j'ai trouvés en ligne pour la modifier selon mes besoins.

En ce qui concerne l'AttributeError booléen, je n'ai aucune idée de ce que je fais de mal.

Gracias.

8voto

Tobi Points 1264

Pour se débarrasser de l'erreur de dépréciation, remplacez la ligne contenant readPlist avec

with open(fileName, 'rb') as f:
    pl = plistlib.load(f)

Votre deuxième problème semble être dû à un changement dans plistlib :

Modifié dans la version 3.7 : Les valeurs des dicts dans le résultat sont maintenant des dicts normaux. Vous ne pouvez plus utiliser l'accès par attribut pour accéder aux éléments de ces dictionnaires.

J'ai eu un problème similaire : AttributeError: 'dict' object has no attribute 'children' a été résolu en remplaçant les occurrences de someObj.children[:] avec someObj['children'] . Je suppose que quelque chose de semblable pourrait être le cas avec votre appel à right.values() mais c'est difficile à dire sans un exemple réel de la liste que vous attendez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X