Heim >Backend-Entwicklung >Python-Tutorial >Wie leite ich die Ausgabe eines externen Befehls mithilfe des Moduls „subprocess' in Python in eine Datei um?

Wie leite ich die Ausgabe eines externen Befehls mithilfe des Moduls „subprocess' in Python in eine Datei um?

DDD
DDDOriginal
2024-11-29 00:50:10864Durchsuche

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

Ausgabe mit Unterprozess in Python umleiten

In Python ermöglicht das Unterprozessmodul den Aufruf externer Befehle. Beim Ausführen von Befehlen ist es oft wünschenswert, die Ausgabe in eine Datei umzuleiten.

Bedenken Sie den folgenden Befehlszeilenbefehl:

cat file1 file2 file3 > myfile

Dieser Befehl verkettet die Dateien Datei1, Datei2 und Datei3 und leitet die um Ausgabe in die myfile-Datei. Um eine ähnliche Funktionalität in Python zu erreichen, können Sie zunächst Folgendes versuchen:

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

Dieser Ansatz leitet die Ausgabe jedoch nicht in eine Datei um. Stattdessen wird es in dem Fenster gedruckt, in dem das Python-Programm aufgerufen wurde.

Python 3.5-Lösung

Um die Ausgabe ordnungsgemäß umzuleiten, stellen Sie ein offenes Dateihandle für die Standardausgabe bereit Argument in subprocess.run:

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

Diese Lösung leitet die Ausgabe effektiv in die myfile-Datei um, ohne dass ein externer Befehl erforderlich ist wie Katze.

Das obige ist der detaillierte Inhalt vonWie leite ich die Ausgabe eines externen Befehls mithilfe des Moduls „subprocess' in Python in eine Datei um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn