Convertir en chaîne lors de la sortie de la sortie standard avec le sous-processus Python

Vous pouvez utiliser subprocess.PIPE '' dans le sous-processus pour obtenir la sortie standard, mais il n'apparaîtra pas dans la console. Je voulais l'obtenir en tant que str '' tout en l'affichant en temps réel sur la console, j'ai donc essayé de savoir comment le faire.

--Une addition--

Celui qui utilise `` yield '' est meilleur.

Code

import sys
import subprocess


def run_and_capture(cmd):
    '''
    :param cmd:commande str à exécuter.
    :rtype: str
    :return:Sortie standard.
    '''
    #Voici le processus(Asynchrone)Début.
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    buf = []
    
    while True:
        #Lire une ligne dans le tampon.
        line = proc.stdout.readline()
        buf.append(line)
        sys.stdout.write(line)
        
        #Tampon vide+Fin du processus.
        if not line and proc.poll() is not None:
            break
    
    return ''.join(buf)


if __name__ == '__main__':
    msg = run_and_capture('du ~/')
    print msg

La description

  1. Démarrez le processus avec `` subprocess.Popen (cmd, ...) ''
  1. Obtenez et sortez la sortie standard canalisée avec `` Popen.stdout.readline () '' ligne par ligne
  2. Collectez toutes les sorties canalisées standard + attendez que le processus se termine
  3. Joindre les chaînes avec ''. Join (buf)

Recommended Posts

Convertir en chaîne lors de la sortie de la sortie standard avec le sous-processus Python
Comment convertir / restaurer une chaîne avec [] en python
[python] Convertir la date en chaîne
Obtenez une sortie standard en temps réel avec le sous-processus Python
Comment convertir un tableau en dictionnaire avec Python [Application]
Changer la destination de sortie standard en un fichier en Python
Les bases de l'apprentissage Python ~ Comment générer (afficher) une chaîne de caractères ~
Créer un message correspondant à la localisation avec la chaîne de traduction python
Sortie vers un fichier csv avec Python
Écrire la sortie standard dans un fichier
Convertir la liste en DataFrame avec python
Convertir une chaîne en image
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
[Introduction à Python] Comment générer une chaîne de caractères dans une instruction Print
Essayez d'extraire une chaîne de caractères d'une image avec Python3
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Convertir un mémo à la fois avec Python 2to3
Sortir les caractères de couleur en joli avec python
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Sortie du journal Python vers la console avec GAE
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
[Python] Comment inverser une chaîne de caractères
Convertissez des données FX 1 minute en données 5 minutes avec Python
UnicodeEncodeError lutte avec la sortie standard de python3
Convertir des nombres chinois en nombres arabes avec Python
Exemple de conversion en ondelettes d'images en Python
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
Remarque: [Python3] Convertissez datetime en chaîne dans le format de votre choix
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
[Introduction à Python] Comment écrire une chaîne de caractères avec la fonction format
Comment lire un fichier CSV avec Python 2/3
Grattage de la nourriture avec python et sortie en CSV
Envoyer un message à LINE avec Python (LINE Notify)
Convertir un PDF en image (JPEG / PNG) avec Python
Comment incorporer des variables dans des chaînes python
Convertissez des PDF en images en masse avec Python
Essayez de dessiner une courbe de vie avec python
Je veux faire un jeu avec Python
Convertir un fichier svg en png / ico avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Essayez de créer un code de "décryptage" en Python
J'ai essayé de sortir LLVM IR avec Python
Décidez d'une mission de laboratoire avec Python (fiction)
Remarque Python: lors de l'attribution d'une valeur à une chaîne
Étapes pour créer un bot Twitter avec Python
Essayez de créer un groupe de dièdre avec Python
Comment générer "Ketsumaimo" en standard en Python
Décrypter une chaîne chiffrée sur iOS avec Python
Je veux écrire dans un fichier avec Python
Zubu amateur veut démarrer Python
[CentOS8] Comment afficher la sortie Python standard dans le journal systemd
Convertir une chaîne au format de liste caractère par caractère avec python
La synchronisation de la sortie est incorrecte lorsque la sortie standard (erreur) est convertie en fichier en Python
[Tentative] Comment convertir une chaîne de caractères en Shift_jis avec kivy-ios Memo kivy v1.8.0
Combinez des chaînes répétitives en une seule avec des expressions régulières Python.
Utilisez tkinter pour déplacer le code de sortie en tant que "A et prétendant être B" en python
Analyser une chaîne JSON écrite dans un fichier en Python