我是一个新手,在 linux 中自动化了一些测试用例。我想在 subprocess.Popen 之后转到下一行并打印 - “我正在执行”。
subprocess.Popen(['./xyzScript.sh']).communicate()
print("我正在执行")
怎么做?
最佳答案
communicate
是阻塞操作。用于获取进程的内容'stdout
和 stderr
.由于您丢弃了它的返回值,因此您似乎不需要它。简单地运行:
subprocess.Popen(['./xyzScript.sh'])
print("I am executing")
足够了。
默认情况下,stdout
和 stderr
没有被重定向,也就是说,他们去了 stdout
的地方和 stderr
你的调用 python 脚本是。如果您希望以编程方式与 shell 脚本的输出交互,您应该配置 Popen
的 stdout 和 stderr 标志。 .例如,如果您希望一起丢弃 shell 脚本的输出,请运行:
subprocess.Popen(['./xyzScript.sh'], stdout=subprocess.DEVNULL,stderr=subprocess.DEVNULL, )
print("I am executing")
关于python - 如何终止使用 Subprocess.Popen 启动进程的函数并移至下一行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56904586/