python - 如何将 python 的 subprocess.Call 方法输出重定向到文件而不是控制台?

标签 python sql-loader 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"])

如何实现这一点?

最佳答案

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

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

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

关于python - 如何将 python 的 subprocess.Call 方法输出重定向到文件而不是控制台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532455/

相关文章:

java - 如何在 sqlldr ctl 文件中设置主键?

oracle - sqlloader 中空格被视为 null

python - 当将stderr重定向到/dev/null并由multiprocessing.map_async调用时,子进程check_output抛出异常

python - 二进制作为 1 和 0 到 int 的列表

python - 基于 SPARK 的解析器的性能如何?

python - 用python在pygame中制作一个8*8的棋盘

python - 在 Python 中加速变量相关矩阵逆计算

python - 如何使用 python 子进程模块执行包含脚本的字符串

python - 实时读取python STDOUT