So führen Sie ein shell-Skript über python
Ich habe ein Skript sagen abc.sh die Liste der Mannschaften mit Fahnen.
Beispiel
//abc.sh
echo $FLAG_name
cp $FLAG_file1 $FLAG_file2
echo 'file copied'
Möchte ich das Skript durch python-code.
sagen
//xyz.py
name = 'FUnCOder'
filename1 = 'aaa.txt'
filename2 = 'bbb.txt'
subprocess.call([abc.sh, name, filename1, filname2], stdout=PIPE, stderr=PIPE, shell=True)
Dieser Aufruf funktioniert nicht.
Was sind die anderen Optionen?
Auch der shell-Skript-Datei in ein anderes Verzeichnis. Und ich will den Ausgang zu gehen, in den Protokollen.
haben Sie sich überlegt mit shutls statt eines bash-Skript. Versuchen
Mit
shutils.copyfile
Mit
shell=True
ist hier falsch-und Fehler-zu induzieren.InformationsquelleAutor Rishabh Agarwal | 2013-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel, die Sie verwenden möchten
Popen
da haben Sie die Prozess-Steuerung danach. Versuchen:Durch die Umleitung der PIPE Lesen Sie die Standardausgabe des Skripts mithilfe
process.stdout.readlines()
oderprocess.stdout.read()
etc.Ich denke, es ist auch die einzige alternative, da er sich einloggen will die Ausgabe.
es ging, aber das Skript ist nicht der Einnahme von allen Argumenten, die ich bin übergeben. was könnte das problem sein?
Wenn Sie verwenden das gleiche Skript wie bei deiner ursprünglichen Frage, dann sind Sie etwas falsch. Shell-Skripte Argumente übergeben werden als
$1 $2 $3
etc.InformationsquelleAutor Alex
Versuchen Sie dies:
Feststellen, dass "abc.sh" ist in Anführungszeichen, weil es nicht eine variable, die name, aber der Befehl, den Sie hier aufrufen.
Ich würde auch im Allgemeinen empfehlen die Verwendung
shell=False
, obwohl in einigen Fällen ist es erforderlich, aufshell=True
.Setzen Ausgabe in eine Datei versuchen:
Versuchen Sie Sie, ohne die Rohre
ich druckte die retcode dieser Aufforderung und Ihr sagt 0...was bedeutet scheitern... keine Ahnung warum?
return-code 0 bedeutet, dass es nicht zu Versagen, en.wikipedia.org/wiki/Exit_status#POSIX.
Lolz...ich bezog mich in diesem support.leadtools.com/CS/forums/27479/ShowPost.aspx
InformationsquelleAutor Bi Rico