python怎样读取大型文本文件?

tkinter的多行文本框组件无法读取大型文本文件,使用22mb的大型txt格式小说作为测试,读取失败,这是无法读取的代码:

#多行文本组件的应用
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import os
mywindow = tk.Tk()
mywindow.title('记事本')
mywindow.geometry('400x300')
filename = ''

def openfile():
  global filename
  filename = filedialog.askopenfilename(defaultextension='.txt')
  if filename=='':
    filename=None
  else:
    mywindow.title(os.path.basename(filename))
    mytext.delete(1.0,tk.END)
    f=open(filename,'r',encoding='UTF-8')
    mytext.insert(tk.INSERT,f.read())
    f.close()

def savefile():
  global filename
  f=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
  filename=f
  fh=open(f,'w',encoding='UTF-8')
  msg=mytext.get(1.0,tk.END)
  fh.write(msg)
  fh.close()
  mywindow.title(os.path.basename(f))

b_open=tk.Button(mywindow,text='打开',command=openfile)
b_open.pack(side=tk.LEFT)
b_save=tk.Button(mywindow,text='保存',command=savefile)
b_save.pack()
mytext=tk.Text(mywindow)
mytext.pack()
mywindow.mainloop()

通过百度搜索,在代码前添加(#-- coding : utf-8--)这一句好像就可以了,测试小说txt是从网络下载(小说仅用于代码测试),通过复制粘贴让他的大小达到35.8MB。代码修改如下:
参考链接:
2021-07-13Python——报错 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xce in position 52: invali_WYDQXCG的博客-CSDN博客

#-*- coding : utf-8-*-
#多行文本组件的应用
#https://blog.csdn.net/WYDQXCG/article/details/118709193

import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
import os
mywindow = tk.Tk()
mywindow.title('记事本')
mywindow.geometry('400x300')
filename = ''
 
def openfile(): 
  global filename
  filename = filedialog.askopenfilename(defaultextension='.txt')
  if filename=='':
    filename=None
  else:
    mywindow.title(os.path.basename(filename))
    mytext.delete(1.0,tk.END)
    #f=open(filename,'r',encoding='UTF-8')
    f=open(filename,'r',encoding='UTF-8')
    mytext.insert(tk.INSERT,f.read())
    f.close()
 
def savefile():
  global filename
  f=filedialog.asksaveasfilename(initialfile='未命名.txt',defaultextension='.txt')
  filename=f
  #fh=open(f,'w',encoding='UTF-8')
  fh=open(f,'w',encoding='UTF-8')
  msg=mytext.get(1.0,tk.END)
  fh.write(msg)
  fh.close()
  mywindow.title(os.path.basename(f))
 
b_open=tk.Button(mywindow,text='打开',command=openfile)
b_open.pack(side=tk.LEFT)
b_save=tk.Button(mywindow,text='保存',command=savefile)
b_save.pack()
mytext=tk.Text(mywindow)
mytext.pack()
mywindow.mainloop()

img

报错是啥啊

请看👉 :Python读取大型文本文件

问题已经解决了,和文件过大没有关系,是编码格式的原因,我的那个小说格式是GB18030的。