【发布时间】:2013-10-03 17:37:10
【问题描述】:
我想使用 python 脚本执行各种Linux 命令/操作。我将使用输出,验证/处理它并继续在我的脚本中执行更多命令,有时也可能是远程执行。
我已经尝试过 os 和 subprocess 模块。这里需要注意的是,我无法将它们两者结合起来,即从一个模块执行的系统调用或命令不会影响“程序/python”环境变量,而只会被该特定模块考虑。
为了。前任。
os.chdir(dirname)
os.system(cmd)
# p = subprocess.Popen(cmd)
现在,os.chdir 的更改对子进程调用没有用处。我们必须坚持其中任何一个。如果我使用subprocess,我必须为其传递/创建 shell 命令。
添加: cwd= 是 subprocess.Popen 的解决方案,但每次我都必须将选项 cwd 作为参数传递给未来的命令,如果它们都应该从该目录运行
有没有更好的方法可以同时使用这两个模块?
或者
还有其他更好的模块可用于命令执行。
我也想知道这两个模块的“优缺点/注意事项”。
【问题讨论】:
-
@jozefg 我之前已经访问过这个问题。它更多的是关于我如何执行一个命令,而不是整个脚本。我的问题是多个命令,如果我想组合来自
os和subprocess的函数,我该怎么做? -
如果您在 Python 脚本中使用内部 shell 命令,那么您做错了(您应该坚持使用
sh脚本)。如果您想运行其他可执行文件,subprocess是正确的模块。正确阅读subprocess文档的任何人(包括您)都可以回答您的所有问题。 -
看看
envoy: github.com/kennethreitz/envoysubprocess一开始可能有点反直觉,envoy简化了 shell 脚本等用例的事情。跨度>
标签: python linux shell command