将Python脚本的输出重定向到文件

时间:2015-09-03 18:38:53

标签: python

python脚本应该打印一些消息,并为不同的情况多次编译代码。编译过程本身在屏幕上为每个案例生成消息。我打算将脚本消息的输出和编译过程消息全部显示出来并写在日志文件中,以便我可以查看任何问题的一个文件。

我尝试过这些行:

import sys

class Logger(object):

    def __init__(self):
        self.terminal = sys.stdout
        self.log = open("regress.log", "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

sys.stdout = Logger()

问题: 这只打印来自原始python脚本的消息,但是我尝试从脚本内部编译的代码中的编译消息不会写入文件中。

我也尝试过: python script.py>输出

问题: 输出文件只包含来自内部代码的编译消息,用#34;输出"文件。不会打印脚本中的消息。此外,编辑消息也不会显示在屏幕上。

基本上,我希望将所有正常打印和已启动命令的输出写在一个文件中并显示在屏幕上。

3 个答案:

答案 0 :(得分:1)

您可以从命令行执行此操作:

python script_name.py > output_name

答案 1 :(得分:0)

为了做到这一点,它要求你做的只是;

def log_msg(msg):
    log = open("C:/Path/to/File.log", "a")
    log.write(msg+"\n")
    log.close()

print "Error message"
log_msg("Error Message")

~~~~

下次,请记得发布您尝试过的内容,您认为会起作用的内容,以及哪些内容无效,以及您的一些代码。

答案 2 :(得分:0)

执行此类操作的最简单方法是使用标准日志记录系统。

您需要为2个处理程序附加一个用于sys.stdout的StreamHandler和一个用于将内容存储在磁盘中的FileHandler。

检查以获取更多信息: https://docs.python.org/2/library/logging.html

相关问题