Execute bash commands that are within a list from python
我拿到这个清单
1 | commands = ['cd var','cd www','cd html','sudo rm -r folder'] |
我试图一个接一个地执行bash脚本中的所有元素,但没有成功。这里需要一个for循环吗?
如何做到这一点?谢谢大家!!!!!
这只是一个建议,但如果您只想更改目录和删除文件夹,可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from os import chdir from os import getcwd from shutil import rmtree directories = ['var','www','html','folder'] print(getcwd()) # current working directory: $PWD for directory in directories[:-1]: chdir(directory) print(getcwd()) # current working directory: $PWD/var/www/html rmtree(directories[-1]) |
这将使
1 2 | for command in commands: os.system(command) |
是你能做到的一种方法…虽然只是把CD放到一堆目录中不会有太大的影响
注意,这将在自己的子shell中运行每个命令…所以他们不会记得他们的状态(即任何目录更改或环境变量)
如果需要在一个子shell中运行它们,则需要将它们与"&;&;"链接在一起。
1 | os.system(" &&".join(commands)) # would run all of the commands in a single subshell |
如注释中所述,一般情况下,最好将子流程模块与
实际上,您应该将命令重新格式化为
我也不确定你到底想在这里完成什么…但我怀疑这可能不是解决问题的理想方式(尽管它应该有效…)
1 2 3 4 5 6 7 8 9 10 | declare -a command=("cd var","cd www","cd html","sudo rm -r folder") ## now loop through the above array for i in"${command[@]}" do echo"$i" # or do whatever with individual element of the array done # You can access them using echo"${arr[0]}","${arr[1]}" also |