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 :

Lecture Fichier TXT depuis URL [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut Lecture Fichier TXT depuis URL
    Bonjour à tous,

    Pour un script j'ai besoin d'aller chercher un fichier texte sur internet, donc d'après un url. Je n'ai pas forcément besoin de le lire entièrement, tout dépend de la date de dernier mise à jour présente en première ligne du fichier.
    Ce fichier est très lourd et sa simple ouverture en lecture prend du temps qui n'est probablement pas nécessaire si la date de maj est la même qu'au précédent run.

    Je pense que ma demande est vaine mais dans le doute, pensez vous qu'il y aurait moyen de ne lire que la première ligne d'un fichier txt depuis un url, sans ouvrir tout le document ?

    Et sinon peut être connaissez vous une façon rapide et efficace de l'ouvrir en lecture ?

    Actuellement j'utilise ce genre de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    txtdata = list(urllib.request.urlopen(url_grpG))
    upDate = txtdata[0].decode("utf-8").split(":")[1].strip()

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 603
    Par défaut
    Bonjour,

    regardez le module requests et notamment les chunk_encoded_requests qui permettent de télécharger un fichier par petits bouts.

    Comme votre fichier distant est du texte, vous devriez pouvoir récupérer une partie de ce qui vous intéresse, en l'occurrence la ligne 1.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par ptrs32 Voir le message
    tout dépend de la date de dernier mise à jour présente en première ligne du fichier.
    Normalement, il y a une en-tête de requête HTTP (If-Modified-Since) pour tester çà. Reste à voir si le serveur HTTP sait la gérer (a essayer quoi).

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

  4. #4
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut
    Merci pour vos réponses !

    En revanche désolé mais j'ai beau chercher je ne comprend pas comment utiliser chunk_encoded_requests et s'il permet bien de n'ouvrir et lire qu'une partie du fichier.

    Pour ta solution wiztricks malheureusement il semble que la date de mise à jour n'est pas inclue dans l'entête de la requête.

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 228
    Par défaut
    hello,
    voici un exemple pour ne lire que les 1024 premiers octets d'un fichier texte csv. Le paramètre stream à True permet de ne pas charger le fichier entièrement en une seule fois mais de travailler en flux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    import requests
    url="https://raw.githubusercontent.com/selva86/datasets/master/BostonHousing.csv"
    response = requests.get(url, stream = True)
    for chunk in response.iter_content(chunk_size=1024):
        print(chunk)
        break
    Ami calmant, J.P

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par ptrs32 Voir le message
    Pour ta solution wiztricks malheureusement il semble que la date de mise à jour n'est pas inclue dans l'entête de la requête.
    C'est à vous de construire l'en-tête...

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

  7. #7
    Membre confirmé
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Septembre 2021
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2021
    Messages : 55
    Par défaut
    Merci à tous, j'ai finalement utilisé la méthode de jurassic pork et Arioch. Ca fonctionne très bien pour ne lire qu'une partie d'une fichier txt.

    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    reponse = requests.get(url, stream = True)
    for line in reponse.iter_content(chunk_size=516):
        for l in line.decode("utf-8").split('\n'):
            if "date" in l:
                upDate = l.split(":")[1].strip()
                break  
        break

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de lecture d'un gros fichier .txt depuis une URL
    Par DeepLearning dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/01/2018, 20h06
  2. lecture fichier txt
    Par stephaneamadeus dans le forum C
    Réponses: 8
    Dernier message: 28/04/2006, 18h47
  3. Lecture fichier txt
    Par licorne dans le forum C
    Réponses: 3
    Dernier message: 03/04/2006, 17h14
  4. [VBA-E]Créer un fichier txt depuis une feuille Excel
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/02/2006, 17h36
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

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