首页 > 解决方案 > 为什么使用 pyinstaller 创建的 exe 文件在写入文件时存在问题?

问题描述

在我的 python 代码中,我打开一个 txt 文件来添加一些从 Tkinter 输入字段中读取的数字(这里称为 numeriaccount)。然后我调用另一个函数来读取这个文件并执行其他操作:

    with open("accounts.txt", "w+") as f: # I open the txt file

        for i in range(len(self.numeriaccount)):  # I scan through the entry fields

            t = self.numeriaccount[i].get().strip()

            # I write the entry field data into the txt file
            if (i == len(self.numeriaccount) - 1 ): 
                f.write( t ) 
            else:
                f.write( t + "\n" )

    self.check_something() # this function reads the same file and performs other actions

问题仅在于 pyinstaller 生成的 exe 文件,而不是我使用 python filename.py 正常运行:

该文件没有更新好,第二个函数读取错误的字符并引发异常。如果我在通过 python filename.py 启动此脚本后打开文本文件,我可以看到带有数字的文件内容,但如果我在启动 filename.exe 后打开同一个文件,则文本文件为空。另一个奇怪的事情是它不会发生在我测试文件的所有 PC 上。

知道什么可能导致这个问题吗?谢谢

编辑:根据要求,我添加了更多信息和回溯:

在此处输入图像描述

蓝色是 5 个输入字段的内容,应该是保存到文本文件中的内容。在红色尖线中,您可以看到在打开文件并对 \n 进行拆分后从 self.check_something() 函数中读取的内容。如您所见,除了 2 个数字和空字符串之外,什么都没有,然后最后一个元素是完全错误的。

另一个信息:当系统因这个异常而停止时,如果我打开文件,我什么也看不到。当我关闭此应用程序时,文件内容更新正常,2 个数字保存在文件中,没有任何问题。这就是让我发疯的原因......这就是为什么它不可能是文件夹问题或错误文件......

再说一次,它在某些电脑上运行良好,而另一些则不行......

标签: pythontkinterpyinstaller

解决方案


推荐阅读