由于this other SO question,我发现在编写bash
循环时Python不喜欢for
的这种语法:
~ $ for num in {2..4}; do echo $num; done
2
3
4
作为一次迭代,而不是4次不同的迭代:
>>> print(subprocess.check_output("for num in {2..4}; do echo $num; done", shell=True).decode())
{2..4}
为什么Python不支持此语法?
我看到确实支持此其他语法:
>>> print(subprocess.check_output("for num in 2 3 4; do echo $num; done", shell=True).decode())
2
3
4
[发布How to use the bash shell with Python's subprocess module instead of /bin/sh显示它使用/bin/sh
,但是您可以使用executable='/bin/bash'
进行更改
import subprocess
print(subprocess.check_output("for num in {2..4}; do echo $num; done", shell=True, executable='/bin/bash').decode())
最终您可以使用bash -c "command"
import subprocess
print(subprocess.check_output('bash -c "for num in {2..4}; do echo $num; done" ', shell=True).decode())