Python在shell中运行多行命令

Python在shell中运行多行命令,python,bash,Python,Bash,假设您有一组命令,就像输入到shell中一样 export x=1 cd foo/the\ bar/baz grep x y z cd "the/quoted path" ls -l 要运行单个命令,可以执行以下操作: subprocess.run(['ls','l']) 但这些命令并不是独立的。以后的命令依赖于以前的命令、导出的变量等。如果这些命令是shell脚本中的代码行,那么运行这些命令的pythonic方式是什么?有没有办法使用shell=True“禁忌” 创建一个包含所有命令的字符

假设您有一组命令,就像输入到shell中一样

export x=1
cd foo/the\ bar/baz
grep x y z
cd "the/quoted path"
ls -l
要运行单个命令,可以执行以下操作:

subprocess.run(['ls','l'])
但这些命令并不是独立的。以后的命令依赖于以前的命令、导出的变量等。如果这些命令是shell脚本中的代码行,那么运行这些命令的pythonic方式是什么?有没有办法使用shell=True“禁忌”


创建一个包含所有命令的字符串可能是最快捷、最简单的方法。它可能不是最漂亮的,但您始终可以创建一个helper函数来抽象出字符串连接

def run_commands(*commands)
    subprocess.run(' ; '.join(commands), shell=True)
然后像这样称呼它

run_commands('cd foo', 'ls')

如果你愿意尝试图书馆,我建议你看看。这使得编写运行控制台命令的python脚本变得非常容易。它还允许您在同一上下文中运行多个命令,对目录执行类似于
cd
的操作,然后在该目录中运行命令。
run_commands('cd foo', 'ls')