Vorwort: Ich verstehe, dass diese Frage schon einmal gestellt wurde, aber ich kann keine Lösung für meinen Fehler finden, indem ich diese vorherigen Antworten ansehe.Keine solche Datei oder Verzeichnis beim Versuch, Unterprozessaufruf auszuführen
Alles, was ich tun möchte, ist diff
für die Ausgabe von zwei verschiedenen Befehlen auf der gleichen Datei aufrufen.
import os, sys
from subprocess import check_call
import shlex
ourCompiler = 'espressoc';
checkCompiler = 'espressocr';
indir = 'Tests/Espresso/GoodTests';
check_call(["pwd"]);
for root, dirs, filenames in os.walk(indir):
for f in filenames:
if len(sys.argv) == 2 and sys.argv[1] == f:
str1 = "<(./%s ./%s) " % (ourCompiler, os.path.join(root, f))
str2 = "<(./%s ./%s) " % (checkCompiler, os.path.join(root, f))
check_call(["diff", str1, str2])
Warum erhalte ich folgenden Fehler?
diff: <(./espressoc ./Tests/Espresso/GoodTests/Init.java) : No such file or directory
diff: <(./espressocr ./Tests/Espresso/GoodTests/Init.java) : No such file or directory
Traceback (most recent call last):
File "runTest.py", line 21, in <module>
check_call(["diff", str1, str2])
File "/usr/lib/python3.5/subprocess.py", line 581, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['diff', '<(./espressoc ./Tests/Espresso/GoodTests/Init.java) ', '<(./espressocr ./Tests/Espresso/GoodTests/Init.java) ']' returned non-zero exit status 2
Wenn ich diesen Befehl von meiner Shell ausführen würde, funktioniert es gut.