execute a shell-script from Python subprocess

后端 未结 1 536
旧时难觅i
旧时难觅i 2021-02-04 22:21

I need to call a shellscript from python. The problem is that the shellscript will ask a couple of questions along the way until it is finished.

I can\'t find a way to d

1条回答
  •  星月不相逢
    2021-02-04 22:37

    Using the subprocess library, you can tell the Popen class that you want to manage the standard input of the process like this:

    import subprocess
    shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE)
    

    Now shellscript.stdin is a file-like object on which you can call write:

    shellscript.stdin.write("yes\n")
    shellscript.stdin.close()
    returncode = shellscript.wait()   # blocks until shellscript is done
    

    You can also get standard out and standard error from a process by setting stdout=subprocess.PIPE and stderr=subprocess.PIPE, but you shouldn't use PIPEs for both standard input and standard output, because deadlock could result. (See the documentation.) If you need to pipe in and pipe out, use the communicate method instead of the file-like objects:

    shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = shellscript.communicate("yes\n")   # blocks until shellscript is done
    returncode = shellscript.returncode
    

    0 讨论(0)
提交回复
热议问题