<legend id='rTrqk'><style id='rTrqk'><dir id='rTrqk'><q id='rTrqk'></q></dir></style></legend>
          <bdo id='rTrqk'></bdo><ul id='rTrqk'></ul>
        <i id='rTrqk'><tr id='rTrqk'><dt id='rTrqk'><q id='rTrqk'><span id='rTrqk'><b id='rTrqk'><form id='rTrqk'><ins id='rTrqk'></ins><ul id='rTrqk'></ul><sub id='rTrqk'></sub></form><legend id='rTrqk'></legend><bdo id='rTrqk'><pre id='rTrqk'><center id='rTrqk'></center></pre></bdo></b><th id='rTrqk'></th></span></q></dt></tr></i><div id='rTrqk'><tfoot id='rTrqk'></tfoot><dl id='rTrqk'><fieldset id='rTrqk'></fieldset></dl></div>
      1. <small id='rTrqk'></small><noframes id='rTrqk'>

        <tfoot id='rTrqk'></tfoot>

        使用Python打开shell环境,运行命令并退出环境

        时间:2023-07-21

                <bdo id='fMRQx'></bdo><ul id='fMRQx'></ul>

                <small id='fMRQx'></small><noframes id='fMRQx'>

                <tfoot id='fMRQx'></tfoot>
                <i id='fMRQx'><tr id='fMRQx'><dt id='fMRQx'><q id='fMRQx'><span id='fMRQx'><b id='fMRQx'><form id='fMRQx'><ins id='fMRQx'></ins><ul id='fMRQx'></ul><sub id='fMRQx'></sub></form><legend id='fMRQx'></legend><bdo id='fMRQx'><pre id='fMRQx'><center id='fMRQx'></center></pre></bdo></b><th id='fMRQx'></th></span></q></dt></tr></i><div id='fMRQx'><tfoot id='fMRQx'></tfoot><dl id='fMRQx'><fieldset id='fMRQx'></fieldset></dl></div>
                  <tbody id='fMRQx'></tbody>
                • <legend id='fMRQx'><style id='fMRQx'><dir id='fMRQx'><q id='fMRQx'></q></dir></style></legend>
                • 本文介绍了使用Python打开shell环境,运行命令并退出环境的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试使用 python 自动化一个过程.如果我只是在终端中,则工作流程如下所示:

                  I'm trying to automate a process using python. If I am just in the terminal the workflow looks like:

                  user:> . /path/to/env1.sh
                  user:> python something.py
                  user:> exit
                  user:> . /path/to/env2.sh
                  user:> python something2.py
                  user:> exit 
                  

                  等更多步骤.每个 env.sh 都会生成一个新脚本,其中包含大量环境变量以及当前目录中未设置的内容.我很确定我需要使用子流程,但我不确定如何去做.理想情况下,工作流程应该是:打开新的 shell --> 运行一些命令 --> 退出 shell --> 必要时重复.

                  etc for a few more steps. Each env.sh spawns a new script with a whole slew of environment variables and whatnot set within the current directory. I'm pretty sure I need to use subprocess, but I'm not exactly sure how to go about it. Ideally the workflow would go: open new shell --> run some commands --> exit shell --> repeat as necessary.

                  似乎需要澄清一下.我了解如何使用 subprocess.Popen()subprocess.call() 从调用 Python 脚本的 shell 中调用事物.这不是我需要的.当一个人调用 env.sh 时,它会设置一大堆环境变量和一些其他相关的东西,然后把你放到一个 shell 中运行命令.重要的是要注意 env.sh 不会终止,直到一个类型 exit 在运行所需的命令后.使用 subprocess.call("./env.sh", shell = True) 打开 shell 并停在那里.就像输入命令 ./env.sh 一样,除了当发出 exit 命令时,其余的 python 脚本.所以:

                  It seems some clarification is needed. I understand how to use subprocess.Popen() and subprocess.call() to call things from within the shell that the Python script was called from. This is not what I need. When one calls env.sh it sets a whole ton of environment variables and a few other pertinent things and then drops you into a shell to run commands. It is important to note env.sh does not terminate until one types exit after running desired commands. Using subprocess.call("./env.sh", shell = True) opens the shell and stops there. It is just like entering the command ./env.sh except that when one issues the exit command, the rest of the python script. So:

                  subprocess.call(". /path/to/env.sh", shell = True)
                  subprocess.call("python something.py", shell = True)
                  

                  不做我需要做的事,也不做:

                  Does NOT do what I need it to do, nor does:

                  p = subprocess.Popen(". /path/to/env.sh", shell = True)
                  subprocess.call("python something.py", shell = True)
                  p.kill()
                  

                  推荐答案

                  据我了解,您想运行一个命令,然后将其传递给其他命令:

                  As I understand you want to run a command and then pass it other commands:

                  from subprocess import Popen, PIPE
                  
                  p = Popen("/path/to/env.sh", stdin=PIPE)   # set environment, start new shell
                  p.communicate("python something.py
                  exit") # pass commands to the opened shell
                  

                  这篇关于使用Python打开shell环境,运行命令并退出环境的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:python subprocess.Popen 挂起 下一篇:记录 python 子进程的语法错误和未捕获的异常并将它们打印到终端

                  相关文章

                  <i id='MSDaG'><tr id='MSDaG'><dt id='MSDaG'><q id='MSDaG'><span id='MSDaG'><b id='MSDaG'><form id='MSDaG'><ins id='MSDaG'></ins><ul id='MSDaG'></ul><sub id='MSDaG'></sub></form><legend id='MSDaG'></legend><bdo id='MSDaG'><pre id='MSDaG'><center id='MSDaG'></center></pre></bdo></b><th id='MSDaG'></th></span></q></dt></tr></i><div id='MSDaG'><tfoot id='MSDaG'></tfoot><dl id='MSDaG'><fieldset id='MSDaG'></fieldset></dl></div>

                    1. <tfoot id='MSDaG'></tfoot>
                    2. <small id='MSDaG'></small><noframes id='MSDaG'>

                      <legend id='MSDaG'><style id='MSDaG'><dir id='MSDaG'><q id='MSDaG'></q></dir></style></legend>

                      • <bdo id='MSDaG'></bdo><ul id='MSDaG'></ul>