/ / So ersetzen Sie das Befehlszeilenargument des Dateinamens durch die Python-Zeichenfolge des entsprechenden Dateiinhalts - Python, Linux, Befehlszeilenargumente

Wie ersetzt man das Kommandozeilenargument von Dateiname mit dem Python-String des entsprechenden Dateiinhalts - Python, Linux, Kommandozeilenargumente

Ich muss ein Linux-Befehlszeilenprogramm von ausführenPython. Die Eingabe in die Befehlszeile ist ein Pfad und Dateiname einer Datendatei. Es gibt buchstäblich Tausende dieser Befehle, die ausgeführt werden müssen, und ich muss zuerst die Datendatei aus einem Prozess in Python erstellen. Die Ausgabe des Befehlszeilenprogramms muss auch von Python gelesen werden. Es wäre so viel einfacher (und in Anbetracht der Lese- und Schreibzeit von Dateien schneller), den Dateinamen irgendwie durch den tatsächlichen Inhalt zu ersetzen und die Ausgabe, die eine Ausgabedatei ist, direkt in einen Python-String zu lesen, ohne dass ein Zugriff auf die Diskette erforderlich ist. Ist das möglich und wie kann dies umgesetzt werden?

Vorstellen:

$ command < infilename > outfilename

oder

$ command --infile filename --outfile filename

ersetzt durch

$ command < {infile content} > {outfile content}

in der Kommandozeile oder etwas Ähnlichem in Python.

Antworten:

0 für die Antwort № 1

Verwenden des Subprozess-Moduls in Python. Die Lösung war wie folgt, wo Befehl und txt_inp ersetzt werden können. txt_inp ist der Textinhalt des obigen Dateinamens:

import subprocess

txt_inp = "some text as input"
process = subprocess.Popen("command", stdin=subprocess.PIPE, stdout=
subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
t_arr, t_err = process.communicate(input=txt_inp)

t_arr und t_err sind die zurückgegebenen stdout und stderr. t_arr kann in einer Datei namens outfilename gespeichert werden, die das folgende Beispiel vervollständigen würde:

command < infilename > outfilename