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

使用Python在同一过程中运行三个命令,第1张

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

有趣的问题。

一种有效的方法是运行命令外壳,然后通过管道将命令传递给它

stdin
(示例使用Python 3,对于Python
2,您可以跳过
depre()
调用)。请注意,命令外壳程序调用被设置为抑制除写入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.depre())TEST_VAR=Hello WorldHello 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 defined1>>> subprocess.call(["echo", "%TEST_VAR%"], shell=True)%TEST_VAR%0

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存