如何将pg_dump的控制台输出写入python中的文件

时间:2015-02-17 14:51:15

标签: python

大家好我想把pg_dump的控制台输出记录到一个文件但是下面不能这样做是我写的函数

import subprocess
def backupOperation():
   p = subprocess.Popen(["pg_dump","-v","-Fc","-d","database_name","--  file","output.dump"], stdout=subprocess.PIPE)
   output, err = p.communicate()
   fo = open("log.txt", "wb")
   fo.write(output)


backupOperation()

但我的log.txt文件为空。 我是python编程的新手,请帮助我。

1 个答案:

答案 0 :(得分:0)

它适用于我,但您不会关闭您的文件,这可能是问题所在。

[EDIT]使用ls测试并且有效。 pg_dump然而写给stderr。下面的工作代码:

import subprocess
def backupOperation():
    p = subprocess.Popen(["pg_dump","-v","-Fc","-d","database_name","--file","output.dump"], 
                         stderr=subprocess.PIPE)
    output, err = p.communicate()
    print(output)
    print(err)
    with open("log.txt", "w") as fo:
        fo.write(err)

backupOperation()