有没有办法将所有打印输出保存到python中的txt文件?让我说我的代码中有这两行,我想将打印输出保存到名为 output.txt 的文件中 .
output.txt
print ("Hello stackoverflow!") print ("I have a question.")
我希望 output.txt 文件包含
Hello stackoverflow! I have a question.
您可以将stdout重定向到文件“output.txt”:
import sys sys.stdout = open('output.txt','wt') print ("Hello stackoverflow!") print ("I have a question.")
给 print 一个 file 关键字参数,其中参数的值是文件流 . 我们可以使用 open 函数创建文件流:
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" .
"a"
"w"
使用日志记录模块
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! :)')
3 回答
您可以将stdout重定向到文件“output.txt”:
给
print
一个file
关键字参数,其中参数的值是文件流 . 我们可以使用open
函数创建文件流:来自Python documentation about print:
并the documentation for open:
"a"
作为open
的第二个参数意味着"append" - 换句话说,文件的现有内容不会被覆盖 . 如果您希望覆盖该文件,请使用"w"
.使用日志记录模块
获取 Logger :
并开始记录/输出(ing):