Python 如何在Subprocess.run命令中使用for循环
我正在使用Python 如何在Subprocess.run命令中使用for循环,python,bash,subprocess,Python,Bash,Subprocess,我正在使用subprocess.run运行一个命令,该命令中有一个for循环,但没有返回预期的结果。这里有一个简单的例子来说明这个问题。 在bash shell中: {1..3}中i的;do echo${i};完成 结果是: 1 2 3 这就是我所期望和想要的。但是,在我的代码中,当我执行以下操作时: subprocess.run(“for i in{1..3};do echo${i};done”,shell=True,check=True) 我的shell上打印的结果是{1..3} 但我希望
subprocess.run
运行一个命令,该命令中有一个for循环,但没有返回预期的结果。这里有一个简单的例子来说明这个问题。
在bash shell中:
{1..3}中i的;do echo${i};完成
结果是:
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中执行代码一样。
如果您有任何关于如何解决此问题的见解,将不胜感激,谢谢 您可能希望生成子shell:
subprocess.run("sh -c 'for i in {1..3}; do echo ${i}; done'", shell=True, check=True)
我建议使用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)
我能够从位于此处的子流程文档中收集此信息:
您好,我希望这对您有所帮助。对于python3:
import subprocess
result = subprocess.getoutput("""for i in {1..3}; do echo ${i}; done""")
print(result)
感谢您的回答,这仍然会给我
{1..3}
结果。这给了你1 2 3
结果吗?谢谢你的回答,这还是给了我{1..3}
结果。这是否给出了1 2 3
结果?谢谢你的回答!没问题!