Comment puis-je lire un python pickle base de données/fichier de C?
Je suis en train de travailler sur l'intégration de plusieurs lecteurs de musique. Pour l'instant mon préféré est exaile.
Dans la nouvelle version, elles sont de la migration de la base de données au format SQLite3 internes, Cornichon format. Je voulais savoir si il existe un moyen d'accéder à pickle format de fichiers sans avoir à désosser le format à la main.
Je sais qu'il y a cPickle module python, mais je ne suis pas au courant si il est appelable directement à partir de C.
Est la portabilité très important pour votre application?
Pas vraiment, puisque exaile ne fonctionne que sur linux autant que je sache.
Pas vraiment, puisque exaile ne fonctionne que sur linux autant que je sache.
OriginalL'auteur Phillip Whelan | 2009-08-18
Vous devez vous connecter pour publier un commentaire.
http://www.picklingtools.com/
Il y a une bibliothèque appelée la PicklingTools qui je aider à maintenir ce qui peut être utile: il vous permet de former des structures de données en C++, que vous pourrez ensuite cornichon/unpickle ... c'est du C++, pas du C, mais qui ne devrait pas être un problème ces jours-ci (en supposant que vous utilisez gcc/g++ suite).
La bibliothèque est une plaine de la bibliothèque C++ (il y a des exemples de C++ et Python dans la distribution montrant comment utiliser la bibliothèque sur les sockets et les fichiers de C++ et Python), mais en général, les bases de décapage de fichiers est disponible.
L'idée de base est que le PicklingTools bibliothèque vous donne "python", semblables à des structures de données en C++, de sorte que vous pouvez sérialiser et désérialiser vers/à partir de Python/C++. Tous (?) les types de base: int, long int,string, Aucun complexe, dictionarys, listes, commandé dictionnaires et les tuples sont pris en charge. Il y a quelques crochets pour faire des classes personnalisées, mais c'est un peu immature: le reste de la bibliothèque est assez stable, et a été actif pendant 8 (?) années.
Exemple Simple:
Il y a encore de la documentation (FAQ et Guide de l'Utilisateur) sur le site web.
Espère que c'est utile:
Gooday,
Richie
http://www.picklingtools.com/
Aussi longtemps que vos données est dans la norme des types de données (int, long, dict, liste, chaîne de caractères, etc), et non pas une classe, il devrait fonctionner très bien. (I. e., quelque chose marinés à partir de Python doit être capable de lire à partir de C++ en utilisant les techniques ci-dessus). Si vos données ne contiennent une classe, vous pourriez être en mesure de l'obtenir pour fonctionner: rappelez-vous que toutes les classes Python de mettre en œuvre leurs espaces de noms que les dicts, de sorte que vous pouvez obtenir le dict d'une classe et de cornichon!
OriginalL'auteur rts1
Vous pouvez intégrer un interpréteur Python dans un programme en C, mais je pense que la solution la plus simple est d'écrire un script Python qui convertit les "pickles" dans un autre format, par exemple une base de données SQLite.
OriginalL'auteur Cristian Ciupitu
Comme Cristian dit, vous pouvez assez facilement intégrer du code python dans votre code C, voir l'exemple ici.
Utilisant cPickle est mort facile aussi bien sur python, vous pouvez utiliser quelque chose comme:
OriginalL'auteur hhurtta