我正在使用subprocess.run
运行其中包含 for 循环的命令但未返回预期结果。这是一个显示问题的简化案例。
在 bash shell 中:
for i in {1..3}; do echo ${i}; done
结果是:
1
2
3
这就是我所期望和想要的。但是,在我的代码中,当我执行以下操作时:
subprocess.run("for i in {1..3}; do echo ${i}; done", shell=True, check=True)
我的shell上打印的结果是 {1..3}
但我想要的结果是:
1
2
3
就像我在 shell 中执行代码时一样。 希望您能提供有关如何解决此问题的任何见解,谢谢!
最佳答案
我建议使用 subprocess.popen:
from subprocess import popen
process = subprocess.Popen("bash for i in {1..3}; do echo $i; done")
try:
outs, errs = process.communicate(timeout=15)
except TimeoutExpired as e:
process.kill()
outs, errs = process.communicate()
或者,使用您原来的代码行:
subprocess.run("bash for i in {1..3}; do echo $i; done", shell=True, check=True, capture_output=True)
我能够从位于此处的子流程文档中看到此信息:Subprocess Pypi Docs
问候,希望这对您有所帮助。
关于python - 如何在 Subprocess.run 命令中使用 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122270/