您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Python在同一过程中运行三个命令

使用Python在同一过程中运行三个命令

有趣的问题。

一种有效的方法是运行命令外壳,然后通过管道将命令传递给它stdin(示例使用Python 3,对于Python 2,您可以跳过decode()调用)。请注意,命令外壳程序调用被设置为抑制除写入stdout的显式输出外的所有内容

>>> import subprocess
>>> cmdline = ["cmd", "/q", "/k", "echo off"]
>>> cmd = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
>>> batch = b"""\
... set TEST_VAR=Hello World
... set TEST_VAR
... echo %TEST_VAR%
... exit
... """
>>> cmd.stdin.write(batch)
59
>>> cmd.stdin.flush() # Must include this to ensure data is passed to child process
>>> result = cmd.stdout.read()
>>> print(result.decode())
TEST_VAR=Hello World
Hello World

将其与分别调用的结果进行比较subprocess.call

>>> subprocess.call(["set", "TEST_VAR=Hello World"], shell=True)
0
>>> subprocess.call(["set", "TEST_VAR"], shell=True)
Environment variable TEST_VAR not defined
1
>>> subprocess.call(["echo", "%TEST_VAR%"], shell=True)
%TEST_VAR%
0

后两个调用看不到第一个调用建立的环境,因为这三个调用都是不同的子进程。

python 2022/1/1 18:42:42 有284人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶