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

Interfaçage autre langage Python Discussion :

Enregistrer automatiquement les commandes de sortie du terminal dans un fichier texte


Sujet :

Interfaçage autre langage Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut Enregistrer automatiquement les commandes de sortie du terminal dans un fichier texte
    Bonjour,

    je souhaite introduire dans un code python une commande bash qui me permet de sauvegarder dans un fichier texte toutes les commandes qui s'affichent dans le terminal.
    J'ai donc introduit cette ligne . os.system("script file.txt")

    Le problema, si j'ai bien compris, est qu'il faut a un moment stopper cette commande (a l'aide de CONTROL+C) pour creer le fichier or je ne sais pas comment je peux introduire ceci dans mon code pour que ca se fasse automatiquement.

    Le but etant de pouvoir afficherdans une interface graphique tout ce qui apparait dans le terminal.

    Merci d'avance pour l'aide que vous pourrez m'apporter.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par laoren Voir le message
    Le problema, si j'ai bien compris, est qu'il faut a un moment stopper cette commande (a l'aide de CONTROL+C) pour creer le fichier or je ne sais pas comment je peux introduire ceci dans mon code pour que ca se fasse automatiquement.
    Pas sûr d'avoir tout compris mais vous pouvez expédier un CTRL-C au process qui exécute "script file.txt" modulo de l'avoir lancé avec subprocess.Popen et d'utiliser .send_signal.

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

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Pas sûr d'avoir tout compris mais vous pouvez expédier un CTRL-C au process qui exécute "script file.txt" modulo de l'avoir lancé avec subprocess.Popen et d'utiliser .send_signal.

    - W
    Merci pour votre reponse:

    Mon code est de cette forme.
    subprocess.call("script test.txt", Shell=True) #Je souhaite ici ouvrir un fichier texte qui stocke tous les commandes qui vont s'afficher dans la console

    fonctions python a executer

    subprocess.Popen.send_signal(signal.CTRL_C_EVENT) #Fermeture du fichier

    je pensé que je n'utilise par encore correctement la fonction send_signal le fichier ne se cree pas et une erreur apparait a cause des arguments de la fonction

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Je ne vois pas ce que c'est que cette histoire de CTRL+C mais moi j'utilise ceci sans problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    with open('result.log', 'w') as outf:
        subprocess.Popen(["commande", "arg"], 
                         universal_newlines=True,
                         stdout=outf)

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Je ne vois pas ce que c'est que cette histoire de CTRL+C mais moi j'utilise ceci sans problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    with open('result.log', 'w') as outf:
        subprocess.Popen(["commande", "arg"], 
                         universal_newlines=True,
                         stdout=outf)
    Je me suis trompe, il faut executer la commande "exit" ala fin pour indiquer la fin du fichier cree part script. Mais mon code n'a pas l'air d'apprecier cette methode:

    J'ao donc essayer la votre mais il apparait une erreur pour la fonction Popen mais il apparait une erreur : Le fichier specifie ne peut pas etre trouve (je ne vois pas vraiment de quel fichier il s'agit). J'essaye donc de trouver une autre solution.

    Merci pour votre aide

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Tu as des messages d'erreur en français ??

    Montre le code que tu as essayé et le traceback d'erreur complet.

    Pour la commande "exit", je ne vois pas le rapport à la question.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Tu as des messages d'erreur en français ??

    Montre le code que tu as essayé et le traceback d'erreur complet.

    Pour la commande "exit", je ne vois pas le rapport à la question.
    Tout le projet est efffectue sous PyCharm, ce n4est donc pas le meme terminal que Linux? et donc pas les memes commandes a utiliser?

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Le code que je t'ai montré doit fonctionner dans ton cas aussi.

    Je pense que tu l'utilises mal, surtout que tu ne peux pas avoir cette erreur puisque si le fichier n'existe pas, en mode écriture, il est créé.

    Montre ce bout de code et le message d'erreur complet.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Le code que je t'ai montré doit fonctionner dans ton cas aussi.

    Je pense que tu l'utilises mal, surtout que tu ne peux pas avoir cette erreur puisque si le fichier n'existe pas, en mode écriture, il est créé.

    Montre ce bout de code et le message d'erreur complet.
    Voici une partie de mon code, ces fonctions etant definies dans une clase correspondant a une fenetre (interface graphique)
    La fonction display_file permet juste de lire le fichier line par ligne pour l'afficher dans mon widget.

    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
    17
    18
    19
    20
    21
     
    def print_results(self):
        try
            execfile("...")
            with open('result.log', 'w') as outf:
                 subprocess.Popen(["commande", "arg"], 
                         universal_newlines=True,
                         stdout=outf)
            self.display_file()
     
        except Exception, e
            self,ui,textBrowser_results.append("EXCEPTION >>>  " + str(e)
     
     
    def display_file(self):
        file = 'results.log'
        file_txt = open(file, 'r')
        linetxt 0 file_txt.readlines() 
        for line in linetxt:
            self.ui.textBrowser_results.append(line)
        file_txt.close()
    Mon ordianteur de travail etant en espagnol, le message d'erreur l'est aussi: EXCEPTION >>> [Error 2]El systemo no puede encontrar el archivo especificado

  10. #10
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    M'enfin Laoren,

    As-tu une vague idée de ce à quoi sert ceci execfile("...") ?

    Sûrement non, supprime cette ligne alors, c'est elle qui te retourne cette erreur.

    Ensuite il ne faut pas recopier intégralement mon code bien sur, il faut remplacer "commande", "arg"] par ta commande et son ou ses argument(s).

    Note que dans le traitement de l'exception tu as mis des virgules à la place des points.

    Et tu peux simplifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def display_file(self):
        with open('results.log', 'r') as inf:
            for line in inf:
                self.ui.textBrowser_results.append(line)

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/06/2014, 04h52
  2. [impoint] Comment enregistrer automatiquement les coordonnées du point
    Par Flaherty Mc Coillean dans le forum Images
    Réponses: 2
    Dernier message: 29/08/2011, 13h19
  3. copier les resultats d'une requete sql dans un fichier texte
    Par mohammed_amine_wardy dans le forum SQL
    Réponses: 1
    Dernier message: 02/01/2008, 16h23
  4. Réponses: 2
    Dernier message: 14/05/2007, 09h40
  5. Réponses: 13
    Dernier message: 24/11/2006, 14h31

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