Jupyter Notebook中实现代码实时写入文件并查看运行进度
解决Jupyter Notebook中文件实时写入的问题
问题出在Python的文件缓冲机制:默认情况下,文件写入的内容会先暂存到内存缓冲区,只有当缓冲区填满、文件被关闭,或者手动触发刷新时,才会真正写入磁盘。你的代码使用with语句包裹,会在整个循环结束后才关闭文件,所以运行期间打开文件看不到内容。
以下是几种可行的解决方法:
每次写入后手动刷新缓冲区
在写入语句后调用flush(),强制将缓冲区内容同步到磁盘:with open('tracker.txt', 'w+') as p: for i in range(1,100000000): p.write("\nValue is: "+str(i)) p.flush()启用行缓冲模式打开文件
打开文件时指定buffering=1(文本模式下的行缓冲),这样每次写入换行符时会自动刷新缓冲区,刚好你的写入内容包含\n,无需手动调用flush():with open('tracker.txt', 'w+', buffering=1) as p: for i in range(1,100000000): p.write("\nValue is: "+str(i))同步打印到控制台(可选增强)
如果需要在Jupyter中同时看到进度,可在写入文件的同时打印内容:with open('tracker.txt', 'w+', buffering=1) as p: for i in range(1,100000000): line = "\nValue is: "+str(i) p.write(line) print(line.strip())
内容的提问来源于stack exchange,提问作者Turing101
相关产品推荐
相关产品推荐

