我在子进程模块中使用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"])
如何实现这个目标?
答案 0 :(得分:2)
打开要写入的文件,并将其作为subprocess.call
的stdout关键字参数传递:
with open('stdout.txt', 'wb') as out:
subprocess.call(['ls', '-l'], stdout=out)
(subprocess.call
接受与subprocess.Popen
构造函数相同的参数。)