Maison >développement back-end >Tutoriel Python >Comment puis-je capturer et renvoyer la sortie d'une commande Shell sous forme de chaîne en Python ?

Comment puis-je capturer et renvoyer la sortie d'une commande Shell sous forme de chaîne en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 02:09:10634parcourir

How Can I Capture and Return Shell Command Output as a String in Python?

Capturer la sortie d'une commande Shell sous forme de chaîne

Problème :

Capturer la sortie d'une commande Shell et la renvoyer sous forme une chaîne, qu'il s'agisse d'un message d'erreur ou de réussite.

Python 3.5 et Supérieur (moderne) :

import subprocess

def run_command(cmd):
    result = subprocess.run(cmd, stdout=subprocess.PIPE, shell=True)
    return result.stdout.decode('utf-8')

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

Python 2.7 - 3.4 (héritage) :

import subprocess

def run_command(cmd):
    output = subprocess.check_output(cmd, shell=True)
    return output

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

Popen Objects (applications complexes et Python 2.6 et Ci-dessous) :

import subprocess

def run_command(cmd):
    p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    output, error = p.communicate()
    return output

print(run_command('mysqladmin create test -uroot -pmysqladmin12'))
# Example Output:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'

Remarque :

  • Le code devra peut-être être modifié pour gérer des environnements ou des scénarios de shell spécifiques.
  • L'exécution de commandes shell introduit directement des risques de sécurité potentiels. Il est recommandé d'utiliser la méthode d'exécution la plus sûre ou de séparer l'exécution de chaque commande et de diriger la sortie manuellement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn