Comment utiliser python-magie 5.19-1
J'ai besoin de déterminer MIME-types de fichiers sans suffixe en python3 et j'ai pensé à python-la magie comme une solution appropriée à cet effet.
Malheureusement, il ne fonctionne pas comme décrit ici:
https://github.com/ahupp/python-magic/blob/master/README.md
Voilà ce qui se passe:
>>> import magic
>>> magic.from_file("testdata/test.pdf")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'from_file'
J'ai donc eu un coup d'oeil à l'objet, qui me fournit la classe Magic
pour lequel j'ai trouvé de la documentation ici:
http://filemagic.readthedocs.org/en/latest/guide.html
J'ai été surpris, que cela ne fonctionne pas, soit:
>>> with magic.Magic() as m:
... pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'ms'
>>> m = magic.Magic()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __init__() missing 1 required positional argument: 'ms'
>>>
Je ne pouvais pas trouver toutes les informations sur la façon d'utiliser la classe Magic
n'importe où, donc je suis allé faire l'essai et l'erreur, jusqu'à ce que j'ai compris, qu'il accepte les instances de LP_magic_set
seulement pour ms
.
Certains d'entre eux sont retournés par le module de méthodes
magic.magic_set()
et magic_t()
.
J'ai donc essayé de l'instancier Magic
avec l'un d'eux.
Quand je puis appeler la file()
méthode de l'instance, il retournera toujours un résultat vide et le errlvl()
méthode m'indique pas d'erreur. 22.
Alors, comment puis-je utiliser la magie de toute façon?
magic.py
fichier dans le même répertoire que celui que vous avez lancé le python shell? Les erreurs que vous avez obtenu de faire ressembler que vous faites (comme je viens de recevoir tous vos exemples de travail). Une façon de le savoir est import inspect
puis inspect.getfile(magic)
et voir si c'est le fichier attendu pour le magic
module.>>> import inspect >>> inspect.getfile(magic) '/usr/lib/python3.4/site-packages/magic.py'
Oh, attendez, vous faites référence à Ubuntu
python-magic
. Ouais c'est complètement différent de ce package de celui que vous avez regardé. Vraiment si vous pouviez jeter un coup d'œil rapide à ce fichier retourné par inspect.getfile
et de voir qu'il est probablement totalement différente de l'un sur GitHub.Une autre chose, pour référence future, c'est que du python, shell, vous pouvez appeler
help(obj)
pour obtenir de l'aide de obj
via le builtin documentations. Donc dans ce cas help(magic)
sera également soulever toutes les docstrings et méthodes disponibles qui montrent clairement que ce que vous avez sur votre système n'est pas la même chose que vous avez obtenu la documentation.J'ai déjà lu le module, ce qui n'était pas utile à tous. C'est par la voie de l'Arc-Paquet.
OriginalL'auteur Richard Neumann | 2014-08-13
Vous devez vous connecter pour publier un commentaire.
Je pense que vous confondez les différentes implémentations de "python-magie"
Vous semblez avoir installé python-magie-5.19.1, cependant, vous de référence tout d'abord à la documentation de python-magie-0.4.6, et d'autre part filemagic-1.6. Je pense que vous êtes mieux à l'aide de python-magie-0.4.6 comme il est facilement disponible sur PYPI et facilement installé via
pip
en virtualenv environnements.Documentation de python-magie-5.19.1 est dur à trouver, mais j'ai réussi à le faire fonctionner comme ceci:
Vous pouvez également obtenir différents magie des descriptions, par exemple, type MIME:
ou pour des versions plus récentes de
python-magic-5.30
Je ne pouvais pas trouver toute la documentation soit, juste eu à lire le module de source de deviner comment l'utiliser.
Merci.
magic.MAGIC_MIME_TYPE
a le comportement désiré.Merci de me donner un exemple de travail avec les deux formats de sortie. Voici un exemple unique de l'libmagic repo (ou une fourchette?) github.com/threatstack/libmagic/blob/master/python/example.py Ce n'est que la documentation que j'ai pu trouver qui a présenté un flux de travail de l'utilisation du module.
Il y a beaucoup de confusion autour des deux binding python (trouvé un rapport de bug dans les paquets d'ubuntu par des gens qui essaient d'utiliser la ahupp version de la lib avec le standard.) De toute façon, vous pouvez obtenir le même résultat sans l'ouvrir et de la charge: de la magie.detect_from_filename('your_file').mime_type fournit directement à la réponse attendue.
OriginalL'auteur mhawke