Maison > développement back-end > Tutoriel Python > Comment rediriger la sortie d'une commande externe vers un fichier à l'aide du module « subprocess » en Python ?

Comment rediriger la sortie d'une commande externe vers un fichier à l'aide du module « subprocess » en Python ?

DDD
Libérer: 2024-11-29 00:50:10
original
774 Les gens l'ont consulté

How do I redirect the output of an external command to a file using the `subprocess` module in Python?

Redirection de la sortie avec un sous-processus en Python

En Python, le module de sous-processus permet l'invocation de commandes externes. Lors de l'exécution de commandes, il est souvent souhaitable de rediriger la sortie vers un fichier.

Considérez la commande de ligne de commande suivante :

cat file1 file2 file3 > myfile
Copier après la connexion

Cette commande concatène les fichiers file1, file2 et file3 et redirige le sortie dans le fichier myfile. Pour obtenir une fonctionnalité similaire en Python, vous pouvez d'abord tenter ce qui suit :

import subprocess, shlex
my_cmd = 'cat file1 file2 file3 > myfile'
args = shlex.split(my_cmd)
subprocess.call(args)  # Spits output in the window from which Python was called
Copier après la connexion

Cependant, cette approche ne redirige pas la sortie vers un fichier. Au lieu de cela, il l'imprime dans la fenêtre dans laquelle le programme Python a été invoqué.

Solution Python 3.5

Pour rediriger correctement la sortie, fournissez un descripteur de fichier ouvert pour la sortie standard. argument dans subprocess.run :

input_files = ['file1', 'file2', 'file3']
my_cmd = ['cat'] + input_files
with open('myfile', "w") as outfile:
    subprocess.run(my_cmd, stdout=outfile)
Copier après la connexion

Cette solution redirige efficacement la sortie vers le fichier myfile sans avoir besoin d'une commande externe comme chat.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal