Ich habe eine ausführbare Datei, die Zeichenfolge akzeptiert und gibt eine andere Zeichenfolge aus. Jetzt muss ich eine Datei als Eingabe füttern und Ausgabe in eine andere Datei schreiben. Der Standardbefehl dafür lautet wie folgt executable_path <input> output
. Jetzt wickle ich das in Python ein. Aber ich bekomme Fehler.Python Subprozess Aufruf mit größerem Vorzeichen (>) funktioniert nicht
cmd = [executable_path , '<', 'tmp/input.txt', '>',
'tmp/output.txt']
p = subprocess.Popen(cmd)
p.communicate()
invalid argument: <
Ich habe versucht Beitritt auch die cmd Argumente:
cmd = [executable_path, ' '.join(['<', 'tmp/input.txt', '>',
'tmp/output.txt'])]
invalid argument: < tmp/input.txt > tmp/output.txt
den Befehl Passing als Zeichenfolge entweder nicht funktioniert hat. hier
p = subprocess.Popen(' '.join(cmd))
OSError: [Errno 2] No such file or directory
Was bin ich?
Das klingt besser als das, was ich ursprünglich hatte. Ich bin zu dieser Lösung gewechselt. Vielen Dank. – CentAu
Sie können wirklich jede Art von Datei-Deskriptor, z. Pipes und sogar TCP [Sockets] (https://docs.python.org/2/library/socket.html#socket.socket.fileno). – kay
@ user292139: nicht verwandt: 1. Verwenden Sie '.communicate()' nicht, wenn Sie 'PIPE' verwenden. Sie könnten stattdessen 'subprocess.check_call ([ausführbarer_pfad], stdin = in_stream, stdout = out_stream)' verwenden. 2. Sie können hier keine TCP-Sockets verwenden, um die Ausgabe des Unterprozesses unter Windows umzuleiten. – jfs