2017-10-13 2 views
0

In Python, wenn ich die BefehlePython Unterprozess keine solche Datei

cmd = ['head', '-7', 'rres17.txt', '>', 'x'] 
subprocess.run(cmd) 

ich Nachricht erhalten den Fehler

head: cannot open ‘>’ for reading: No such file or directory 
head: cannot open ‘x’ for reading: No such file or directory 

ausführen, wenn ich den Befehl

cmd = "head -7 rres17.txt > x" 
subprocess.run(cmd) 

ich die bekommen ausführen Fehlermeldung

FileNotFoundError: [Errno 2] No such file or directory: 'head -7 rres17.txt > x' 

Ich benutze Python-Version 3.5.2. Wie bekomme ich Subprozess korrekt zu diesen Befehl ausführen, die Art, wie die Dokumentation darauf hinweist, dass es sollte? Vielen Dank.

EDIT:

Die folgenden Befehle gearbeitet:

cmd = ['head', '-7', 'rres17.txt'] 
with open("x", "wb") as out: subprocess.Popen(cmd, stdout=out) 

Vielen Dank allen.

+0

Try 'rres17.txt' auf Ihren vollständigen Pfad zu ändern. – eyllanesc

+0

@eyllanesc, bekomme ich den gleichen Fehler, wenn ich auf den vollständigen Pfad geändert habe. –

+0

'>' Syntax ist etwas, was die Shell verarbeitet, nicht etwas, das tatsächlich in den ausgeführten Befehl gelangen sollte. – user2357112

Antwort

1

Sie können stdout nicht in eine Datei wie diese umleiten, Sie müssen subprocess.run verwenden und zu einer Pipe umleiten.

Siehe piping output of subprocess.Popen to files

Zum Beispiel:

import subprocess 
import io 

with io.open('x', mode='wb') as fd: 
    subprocess.run(['head', '-7', 'rres17.txt'], stdout=fd) 
+0

Ich bekomme immer noch die gleiche Art von Fehler. Die Verwendung von [code] mit open ("x", "wb") als out: subprocess.Popen (cmd, stdout = out) 'code' und das Entfernen der Shell-Umleitung ergibt denselben Fehler. –

+0

Können Sie die Fehlermeldung bitte posten? –

Verwandte Themen