IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire archive .taz depuis URL


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Lire archive .taz depuis URL
    Bonjour à tous,

    Je suis en train de réaliser un programme Python qui permet à l'utilisateur de rechercher le nombre d’occurrences de certains termes de son choix dans l'ensemble des débats de l'Assemblée Nationale, afin notamment d'en étudier l'évolution, avec plusieurs fonctionnalités qui peuvent être intéressantes. Tout ce qui se dit lors des débats à l'Assemblée Nationale est en effet retranscris et ces données sont disponibles en ligne.

    Sur ce lien, on retrouve pour chaque année un répertoire qui contient un certain nombre d'archives .taz. D'après cette notice, ces archives contiennent pour chacune d'entre elles deux fichiers XML. C'est celui qui commence par CRI m'intéresse dans mon script.

    Cependant donc, je ne sais pas exactement à quoi correspond une archive .taz. Cela semble être la compression d'un fichier .tar et .Z, assez archaïque donc et très peu documenté sur internet.

    Je suis parvenu avec la commande bash suivante à transformer des archives .taz que j'avais téléchargé en local en .tar:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for d in *.taz; do tar xaf $d; done
    Je sais par ailleurs comment travailler avec une archive .tar directement dans mon programme Python, donc je suis parvenu à tester mon programme.

    Je cherche donc comment je pourrais dans mon programme Python récupérer à partir d'une url comme celle-ci par exemple, l'archive .tar qui lui correspond afin de travailler ensuite avec le fichier .xml qui m'intéresse.

    J'ai bien évidemment essayé de l'ouvrir comme je le ferais pour ouvrir une archive .tar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import urllib.request
    import tarfile
     
    url = "https://echanges.dila.gouv.fr/OPENDATA/Debats/AN/2011/AN_20111013_088.taz"
    stream = urllib.request.urlopen(url)
    file = tarfile.open(fileobj=stream, mode="r:gz")
    Mais j'obtiens une erreur qui m'indique que ce n'est pas un fichier gzip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tarfile.ReadError: not a gzip file

    Quelqu'un aurait-il une idée ? Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par jules02880 Voir le message
    Quelqu'un aurait-il une idée ?
    Si vous avez essayé tous les formats de compression supportés par tarfile et que çà ne fonctionne pas, vous avez toujours la solution de sauvegarder les données dans un fichier et de faire faire le boulot par "tar" (via subprocess.call).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    Citation Envoyé par jules02880 Voir le message
    Bonjour à tous,
    Cependant donc, je ne sais pas exactement à quoi correspond une archive .taz. Cela semble être la compression d'un fichier .tar et .Z, assez archaïque donc et très peu documenté sur internet.
    en fait une archive .taz est une archive .tar compressée en format LZW.
    Soit, tu la décompresses en utilisant un programme externe comme le suggère Wiztricks, ou alors tu peux utiliser par exemple le paquet unlzw3 disponible chez Pypi. Le souci de unlzw3 c'est qu'il est écrit en pure python et donc plus lent qu'un programme externe.
    Voici un exemple d'utilisation de ce paquet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import urllib.request
    import io
    import unlzw3
    import tarfile
    FILE_URL = "https://echanges.dila.gouv.fr/OPENDATA/Debats/AN/2011/AN_20111013_088.taz"
    tarFic = "M:/temp/fichier.tar"
    response = urllib.request.urlopen(FILE_URL)
    compressed_file = io.BytesIO(response.read())
    decompressed_file = unlzw3.unlzw(compressed_file.read())
    with open(tarFic, 'wb') as outfile:
        outfile.write(decompressed_file)
    outfile.close()
    tar = tarfile.open(tarFic, "r")
    for tarinfo in tar:
        print(tarinfo.name, "a comme taille", tarinfo.size, "octets",)
    tar.close()
    Résultat :
    [python36]>>> AAA_20111013_088.xml a comme taille 405748 octets
    CRI_20111013_088.xml a comme taille 789633 octets
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

Discussions similaires

  1. Lire une vidéo depuis une URL
    Par tlili_info dans le forum Android
    Réponses: 1
    Dernier message: 01/06/2011, 09h04
  2. [AJAX] Lire un fichier depuis une URL?
    Par PlaTyPuSs dans le forum AJAX
    Réponses: 6
    Dernier message: 01/06/2009, 13h28
  3. [C#] Lire une video depuis la RAM
    Par Seb.26 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/12/2006, 13h07
  4. recuperer argument depuis url
    Par jejam dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 11h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo