Ich habe mich gefragt, ob subprocess.call("if [ ! -d '{output}' ]; then mkdir -p {output}; fi",shell=True)
von sh
oder zsh
anstelle von bash
auf verschiedenen Servern interpretiert wird?
Hat jemand Ideen dazu?
Was muss ich tun, um sicherzustellen, dass es von bash
interpretiert wird?
%Vor%
Beachten Sie, dass / bin / sh oft mit etwas anderem verknüpft ist, z. auf ubuntu:
%Vor% Sie können das Argument executable
verwenden, um den Standardwert zu ersetzen:
%Vor%... Wenn shell = True, on Unix das ausführbare Argument gibt eine Ersatzshell für die Standard / bin / sh.
Sie können die Shell Ihrer Wahl explizit aufrufen, aber für den von Ihnen geposteten Beispielcode ist dies nicht der beste Ansatz. Schreiben Sie stattdessen den Code direkt in Python. Siehe hier: mkdir -p-Funktionalität in Python
Um die Shell anzugeben, verwenden Sie den ausführbaren Parameter mit shell=True
:
%Vor%Wenn shell = True ist, spezifiziert das ausführbare Argument unter Unix a Ersatzshell für den Standard / bin / sh.
Natürlich ist die Verwendung des ausführbaren Parameters sauberer, aber es ist auch möglich, bash von sh zu rufen:
%Vor%Tags und Links python shell subprocess