提问者:小点点

将打印输出定向到打印机。txt文件


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

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

我想要输出。要包含的txt文件

Hello stackoverflow!
I have a question.

共3个答案

匿名用户

给出print一个file关键字参数,其中该参数的值是一个文件流。我们可以使用open功能创建文件流:

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

从关于打印的Python文档中:

file参数必须是具有write(string)方法的对象;如果不存在或Nonesys。将使用标准输出

open的留档:

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

“a”作为open的第二个参数意味着“append”——换句话说,文件的现有内容不会被覆盖。如果要覆盖文件,请使用“w”

但是,多次使用open打开文件对性能来说并不理想。理想情况下,您应该打开它一次并命名它,然后将该变量传递给printfile选项。您必须记得在以后关闭该文件!

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

还有一个语法快捷方式,即with块。这将在块的末尾为您关闭文件:

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

匿名用户

您可以将标准输出重定向到文件“output.txt”:

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

匿名用户

使用日志模块

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 = init_logging()

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

logger.debug('Hi! :)')