哪个是命令执行的最佳python模块

时间:2013-09-27 12:12:12

标签: python linux shell command

我想使用python脚本执行各种Linux命令/操作。我将使用输出,验证/处理它并继续在我的脚本中执行更多命令,有时也可能是远程执行。

我尝试了ossubprocess个模块。这里需要注意的是,我无法将两者结合起来,即系统调用或从一个模块执行的命令不会影响“program / python”环境变量,而只会被该特定模块考虑。

有关。恩。

os.chdir(dirname)
os.system(cmd)
# p = subprocess.Popen(cmd)

现在,来自os.chdir的更改对于子进程调用没有用。我们必须坚持使用其中任何一个。如果我使用subprocess,我必须为它传递/创建shell命令。


已添加: cwd=subprocess.Popen的解决方案,但每次我必须将选项cwd作为参数传递给将来的命令,如果它们都应该从那个目录运行


有没有更好的方法可以同时使用这两个模块?

或者

是否还有其他更好的模块可用于命令执行。

此外,我想知道这两个模块的“Pros-Cons / Caveats”。

1 个答案:

答案 0 :(得分:2)

os.system始终运行/bin/sh,它解析命令字符串。如果在命令参数中有空格$等,或者用户有shell配置文件,则这可能存在安全风险。要避免所有此类风险,请将subprocess与字符串列表或元组一起用作命令(shell=False)。

要在命令中模拟os.chdir,请使用cwd=中的subprocess参数。