如何使用重定向命令输出执行操作系统()在python中

2024-06-01 14:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用调用shell脚本执行操作系统()在python中。我的shell脚本有一些echo语句,我想在文件中重定向这些语句。在

以下是我正在尝试的:

cmd = "/opt/rpm/rpm_upgrade.sh >& /opt/rpm/upgrader.log"
cmdline = ["/bin/sh", cmd]
os.execvp(cmdline[0], cmdline)

以下是我得到的错误:

^{pr2}$

有人能帮忙吗?在


Tags: 文件echo脚本cmdlogbinsh语句
1条回答
网友
1楼 · 发布于 2024-06-01 14:23:22

之所以会发生这种情况,是因为您将整个字符串当作要执行的程序名来传递:

"/opt/rpm/rpm_upgrade.sh >& /opt/rpm/upgrader.log"

解决方法很简单:

^{pr2}$

现在,sh将接收三个参数,而不是一个。

或者您可以切换到功能更全面的subprocess模块,该模块允许您重定向Python中的输出:

import subprocess
with open("/opt/rpm/upgrader.log", "wb") as outfile:
    subprocess.check_call(["/opt/rpm/rpm_upgrade.sh"], shell=True,
                          stdout=outfile, stderr=subprocess.STDOUT)

相关问题 更多 >