Python连接子进程
我正在使用python执行shell命令。它工作得很好,但当我尝试执行多个命令时,它会在不同的进程中执行。 例如: 我使用以下代码执行这两个命令(命令被分配给变量bash\u cmd): 由于每次都创建不同的进程,因此我无法访问上一个命令中设置的名称。我可以编写一个批处理文件,但变量名的值也会动态变化。我希望这两个命令在同一进程中执行Python连接子进程,python,subprocess,popen,shellcode,Python,Subprocess,Popen,Shellcode,我正在使用python执行shell命令。它工作得很好,但当我尝试执行多个命令时,它会在不同的进程中执行。 例如: 我使用以下代码执行这两个命令(命令被分配给变量bash\u cmd): 由于每次都创建不同的进程,因此我无法访问上一个命令中设置的名称。我可以编写一个批处理文件,但变量名的值也会动态变化。我希望这两个命令在同一进程中执行 有没有办法在python中批处理这些命令,或者加入子流程。请帮忙 您可以一次完成此操作,因此: NAME=XYZ葫芦android运行myApp.apk 每个子流
有没有办法在python中批处理这些命令,或者加入子流程。请帮忙 您可以一次完成此操作,因此:
每个
子流程。Popen
创建一个新流程。如果要在同一个shell中执行多个命令,则可以一次传递所有命令:
from subprocess import check_call
check_call("\n".join(shell_commands), shell=True)
您还可以启动shell进程,并通过其stdin逐个向其提供命令:
from subprocess import Popen, PIPE
shell = Popen("/bin/sh", stdin=PIPE, bufsize=1)
for shell_command in iter(commands_queue.get, None):
print >>shell.stdin, shell_command # write command
shell.stdin.close()
if shell.wait() != 0:
raise RuntimeError(shell.returncode)
在您的特定情况下,您可以将修改后的环境直接传递给子流程:
import os
from subprocess import check_call
env = os.environ.copy()
env['NAME'] = 'XYZ'
check_call(["calabash-android", "run", "myApp.apk"], env=env)
from subprocess import Popen, PIPE
shell = Popen("/bin/sh", stdin=PIPE, bufsize=1)
for shell_command in iter(commands_queue.get, None):
print >>shell.stdin, shell_command # write command
shell.stdin.close()
if shell.wait() != 0:
raise RuntimeError(shell.returncode)
import os
from subprocess import check_call
env = os.environ.copy()
env['NAME'] = 'XYZ'
check_call(["calabash-android", "run", "myApp.apk"], env=env)