如何将Python的subprocess.Call方法的输出重定向到文件而非控制台?
我正在使用Python的subprocess模块中的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"])
我该怎么做才能实现这个呢?
相关问题:
1 个回答
2
打开一个文件用于写入,然后把这个文件作为 subprocess.call 的 stdout 参数传入:
with open('stdout.txt', 'wb') as out:
subprocess.call(['ls', '-l'], stdout=out)
(subprocess.call 接受的参数和 subprocess.Popen 的构造函数是一样的。)