python - 为什么使用 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 个数字保存在文件中,没有任何问题。这就是让我发疯的原因......这就是为什么它不可能是文件夹问题或错误文件......
再说一次,它在某些电脑上运行良好,而另一些则不行......
解决方案
推荐阅读
- python - 如何在python中将字符串转换为可读的时间格式?
- date - 如何在winhex中计算zip文件的名称、日期和时间?
- python-3.x - Pycharm中如何使用Kivy(1.10.1)解释器(社区版2018.3.5)
- autotools - 使用 automake 将文件复制为默认目标的一部分
- java - 我们如何在二叉搜索树中获得给定值的高度(当给定值为字符串时)
- python - 尝试用特定值填充整行/列时出现形状不匹配值错误
- android - 每当我添加 Firebase 性能监控时,应用程序都无法安装
- .net - RabbitMQ .Net 核心
- reactjs - 如何将道具传递给 React Big Calendar 自定义组件?
- sql - 有没有办法检查一个表是否包含答案表中某一列中一个特定 ID 的所有记录?