首页 文章

在Python 3中将打印输出定向到.txt文件

提问于
浏览
18

有没有办法将所有打印输出保存到python中的txt文件?让我说我的代码中有这两行,我想将打印输出保存到名为 output.txt 的文件中 .

print ("Hello stackoverflow!")
print ("I have a question.")

我希望 output.txt 文件包含

Hello stackoverflow!
I have a question.

3 回答

  • 9

    您可以将stdout重定向到文件“output.txt”:

    import sys
    sys.stdout = open('output.txt','wt')
    print ("Hello stackoverflow!")
    print ("I have a question.")
    
  • 36

    print 一个 file 关键字参数,其中参数的值是文件流 . 我们可以使用 open 函数创建文件流:

    print("Hello stackoverflow!", file=open("output.txt", "a"))
    print("I have a question.", file=open("output.txt", "a"))
    

    来自Python documentation about print

    file参数必须是带有write(string)方法的对象;如果它不存在或None,将使用sys.stdout .

    the documentation for open

    打开文件并返回相应的文件对象 . 如果无法打开文件,则会引发OSError .

    "a" 作为 open 的第二个参数意味着"append" - 换句话说,文件的现有内容不会被覆盖 . 如果您希望覆盖该文件,请使用 "w" .

  • 3

    使用日志记录模块

    def init_logging():
        rootLogger = logging.getLogger('my_logger')
    
        LOG_DIR = os.getcwd() + '/' + 'logs'
        if not os.path.exists(LOG_DIR):
            os.makedirs(LOG_DIR)
        fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
        rootLogger.addHandler(fileHandler)
    
        rootLogger.setLevel(logging.DEBUG)
    
        consoleHandler = logging.StreamHandler()
        rootLogger.addHandler(consoleHandler)
    
        return rootLogger
    

    获取 Logger :

    logger = init_logging()
    

    并开始记录/输出(ing):

    logger.debug('Hi! :)')
    

相关问题