有时候,输出的内容太多直接打印在控制台是没办法查看的,所以,就会考虑将输出打印在指定的文件中。
方法一:将标准输出赋值为一个文件句柄,使用完成之后关闭。
output = sys.stdout
outputfile = open('test.txt', 'a')
sys.stdout = outputfile
print('hello')
outputfile.close()
sys.stdout=output # 重要!使用完成之后需要将标准输出重置
优点: 理解简单
缺点:
1、很容易忘记关掉文件的操作
2、如果输出部分是个异步获取的函数,关闭文件和重置标准输出又必须在异步获取数据之后。
问题:
1、如果不重置标准输出会发生什么?程序结束后临时对象就会被释放。
2、如果不关闭文件会发生什么?Python会在程序结束后的某个时间关闭文件,如果多个进程对文件进行读写,可能就会出现错误。
使用方法一需要注意:如果多个方法对文件进行写操作,可能会出现冲突,需要使用互斥锁来避免。
方法二:直接使用print()的参数file来指定输出的文件。
with open('test.txt', 'a') as f:
print('hello', file=f,flush=True)
这种方法直接使用with和print的参数完成标准输出的重定向,with会自动进行文件的关闭,不涉及标