0

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

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

为了。前任。

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

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


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


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

或者

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

我也想知道这两个模块的“利弊/警告”。

4

1 回答 1

2

os.system总是运行/bin/sh,它解析命令字符串。如果$命令参数中有空格等,或者用户有 shell 配置文件,这可能会带来安全风险。为避免所有此类风险,请使用subprocess字符串列表或元组作为命令 ( shell=False)。

os.chdir要在命令中进行模拟,请cwd=使用subprocess.

于 2013-09-27T12:14:55.930 回答