1

我在 subprocess 模块中使用 python 的 Call 方法来执行 sqlldr 命令

from subprocess import call

retcode = call([self.COMMAND, self.CONNECTION_STRING, "control=" +self.CONTROL_FILE, 
            "log="+self.TEMP_LOG_FILE, self.MODE , "data="+loadfile])

当我运行上面的脚本时,sqlldr 命令的输出被打印到我想重定向到文件或忽略它的控制台。因为 sqlldr 也会写入指定的日志。

我尝试了类似的方法,将输出重定向到文件,但在这一行抛出错误

retcode = call([self.COMMAND, self.CONNECTION_STRING, "control=" +self.CONTROL_FILE, 
            "log="+self.TEMP_LOG_FILE, self.MODE , "data="+loadfile, "> discard.log"])

如何做到这一点?

4

1 回答 1

2

打开一个文件进行写入并将其作为 stdout 关键字参数传递subprocess.call

with open('stdout.txt', 'wb') as out:
  subprocess.call(['ls', '-l'], stdout=out)

subprocess.call接受与构造函数相同的参数subprocess.Popen。)

于 2011-09-23T17:10:34.220 回答