python - 功能问题程序
问题描述
我写了一个制作列表的程序
但是当导入文件的内容很高时
程序关闭(崩溃)
这是我写的代码
在这张照片中,使用了内容较少的文件
在此处输入图像描述
这张照片使用了一个包含大量内容的文件
在此处输入图像描述
def btn_start():
try:
if open_file1_text and open_file2_text :
file_1 = open(open_file1_text.get(), 'r')
file_2 = open(open_file2_text.get(), 'r')
lines_1 = file_1.readlines()
lines_2 = file_2.readlines()
global text
text = ("")
demo_text_box.delete(1.0,'end')
demo_text_box_a.delete(1.0,'end')
demo_text_box_a.insert(INSERT,start_text_demo )
for pline in lines_2:
for uline in lines_1:
demo_text_box.insert(INSERT,uline.rstrip('\n') + separator_text_.get() + pline)
text += (uline.rstrip('\n') + separator_text_.get() + pline)
file_1.close()
file_2.close()
except FileNotFoundError :
demo_text_box.delete(1.0,'end')
demo_text_box_a.delete(1.0,'end')
demo_text_box_a.insert(INSERT,File_Not_Found_Error )
解决方案
您的代码还有另一个问题:如果file_2
未找到,file_1
则将保持打开状态,这可能很糟糕(您希望在不再需要文件时立即关闭它们)。
您可以使用语句解决此问题,with
即使发生异常,也会自动关闭您的文件。
至于您的内存问题,我猜text
它不适合内存,因此您可能希望将其内容写入另一个文件。
def btn_start(open_file1_text, open_file2_text):
if not (open_file1_text and open_file2_text):
return
try:
with open(open_file1_text.get(), 'r') as file_1:
lines_1 = file_1.readlines()
with open(open_file1_text.get(), 'r') as file_2:
lines_2 = file_2.readlines()
demo_text_box.delete(1.0, 'end')
demo_text_box_a.delete(1.0, 'end')
demo_text_box_a.insert(INSERT, start_text_demo)
with open('text.txt', 'w') as text_file:
for pline in lines_2:
for uline in lines_1:
demo_text_box.insert(INSERT,uline.rstrip('\n') + separator_text_.get() + pline)
text_file.write(uline.rstrip('\n') + separator_text_.get() + pline)
except FileNotFoundError :
demo_text_box.delete(1.0,'end')
demo_text_box_a.delete(1.0,'end')
demo_text_box_a.insert(INSERT,File_Not_Found_Error )
如果文件本身不适合内存(意味着您不能调用file.readlines()
),您也可以在循环的每次迭代中读取它们:
with open('text.txt', 'w') as text_file:
with open(open_file1_text.get(), 'r') as file_2:
for pline in file_2:
with open(open_file1_text.get(), 'r') as file_1:
for uline in file_1:
demo_text_box.insert(INSERT,uline.rstrip('\n') + separator_text_.get() + pline)
text_file.write(uline.rstrip('\n') + separator_text_.get() + pline)
推荐阅读
- ssh - 有没有办法使用 gcloud compute ssh 实用程序远程执行命令
- node.js - 从 index.hml 加载 manifest.json 时 React/Electron Production Build 给出 CORS 错误
- python - 使用python访问照相手机的问题
- hyperledger-fabric - Hyperledger Fabric:Peers 和父组织都使用相同的 TLS 证书?(参考测试网络)
- fluid-framework - 是什么阻止 Fluid 在 iOS 和 iPadOS 上与 Safari 配合使用?
- kubernetes - 在 kubectl 配置文件中正确使用多个集群
- c++ - 为什么在调试以下代码时出现错误“字符串下标超出范围”
- javascript - 如何访问对象内的特定路径/地址?
- python - get_object_or_404 未定义
- python - TypeError:必须是 str,而不是 numpy.int64。无法查明问题