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 :

visualisation en temps réel lors d'une nouvelle écriture dans un fichier txt [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Par défaut visualisation en temps réel lors d'une nouvelle écriture dans un fichier txt
    Bonjour

    Sous windows, python 2.7
    Je souhaiterais écrire dans un fichier txt et visualiser en direct mes ajouts.
    Exemple dans mon fichier test.py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import time
    out = open( "place.txt","a")
    for i in range(6):
        out.write('test\n')
        time.sleep(5)
    out.close()
    Mais la visualisation (notepad++) du contenu ne se fait qu'à la fermeture du fichier, et je voudrais visualiser le nouvel ajout en temps réel

  2. #2
    Membre expérimenté Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Par défaut

    Je pense pas que ce soit possible, mais je suis pas d'un niveau assez elevé ! je sais au moins que pour lire un fichier il faut que le fichier soit ouvert en lecture, donc ecrire et lire en meme temps,...... je dirai qu'il faut que le fichier soit ouvert en lecture / ecriture et qu'il autorise la lecture / ecriture simultanee

  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 olap75 Voir le message
    Je souhaiterais écrire dans un fichier txt et visualiser en direct mes ajouts.
    Il "suffit" de forcer l'écriture disque via .flush:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import time
    with open( "place.txt","a") as f:
        for i in range(6):
            f.write('test\n')
            f.flush()
            time.sleep(5)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il "suffit" de forcer l'écriture disque via .flush:
    pratiquement parlant notepad++ va afficher un message "le contenu du fichier à été modifié, voulez vous conserver tel quel ou recharger", nécessitant un clic souris
    qui plus est sous windows il me semble que par défaut les données sont écrite directement, à l'inverse de linux

    ce que tu dis est vrai, mais j'ai comme dans l'idée que ça ne va pas faire les affaires du PO, perso j'aurai tendance à dire comme Clodion pour le coup; pas possible...

  5. #5
    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 BufferBob Voir le message
    qui plus est sous windows il me semble que par défaut les données sont écrite directement, à l'inverse de linux
    Windows n'est pas une flèche mais il "bufferise" les écritures disques, quand il peut.

    Citation Envoyé par BufferBob Voir le message
    ce que tu dis est vrai, mais j'ai comme dans l'idée que ça ne va pas faire les affaires du PO, perso j'aurai tendance à dire comme Clodion pour le coup; pas possible...
    Il est improbable que notepad+ mette à jour ce qu'il affiche au fur et à mesure des ajouts dans le fichier.
    Par contre, sans flush, il faut attendre la fin du programme pour visualiser ce qui a été écrit jusque là alors qu'avec flush on le récupère. Mais c'est une restriction de notepad+.

    Si on veut visualiser les ajouts, il faut écrire du code qui regarde périodiquement le pointeur de fin et récupère les ajouts.
    Et çà marche assez bien car la plupart des système de supervision "regardent" les fichiers logs des application "en temps réel", filtrent les évènements intéressants et remontent d'éventuelles alertes.
    La magie est dans l'ouverture du fichier en mode "a"-ppend qui n'est pas géré de la même façon que "w"-rite.

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

  6. #6
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Bonsoir,
    Une solution serait, peut-être, de s'affranchir de Notepad++.
    Avec "tkinter", il est relativement aisé d'afficher un fichier texte.
    De là, pourquoi ne pas faire une mise à jour du widget à chaque modification du fichier disque?
    Et même, pourquoi ne pas prendre le problème dans l'autre sens: modifier un widget "text" qui se charge de la sauvegarde à chaque modification?
    Non?

    Clodion

  7. #7
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    dans une invite powershell on peut avoir l'equivalent d'un tail -f linux-like en tapant :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-Content fichier.txt –Wait

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

Discussions similaires

  1. Insérer une nouvelle colonne dans un fichier Excel
    Par TopCao dans le forum MATLAB
    Réponses: 8
    Dernier message: 11/10/2011, 09h29
  2. Ecrire une plage excel dans un fichier txt
    Par kuma_buzz dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/05/2008, 11h48
  3. Réponses: 4
    Dernier message: 25/04/2007, 11h29
  4. [SQL-VBA] récupérer le résultat d'une requète SQL dans un fichier txt
    Par djidanestribbal dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 13/02/2007, 15h25
  5. [MySQL] Est-ce possible de creer des champs en temps réel lors d'une requête SQL ?
    Par kaptnkill dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/09/2006, 19h18

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