python - 功能问题程序

标签 python file tkinter crash

我写了一个制作列表的程序
但是当导入文件的内容很高时
程序已关闭( 崩溃 )
这是我写的代码

在这张照片中,使用了内容较少的文件

enter image description here

这张照片使用了一个包含大量内容的文件

enter image description here

file zip

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)

关于python - 功能问题程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61993530/

相关文章:

c++ - 如果我不关闭,ifstream 会导致内存泄漏吗?

python - 可滚动框架未填满 Canvas

python - 如何更新 matplotlib 中的绘图

python - 将Python标签的特定宽度设置为这么多像素长?

python - 未正确调用 DataFrame 构造函数

python - Selenium Webdriver + python - 鼠标悬停后无法隐藏工具提示

java - File.length() 返回 0

android - 删除功能不起作用

python - Flask-Talisman 破坏了 Flask-restplus 的 swagger 文档

python - 内置排序功能不起作用