使用 pyinstaller 创建 exe 文件时如何将更改永久保存到捆绑文件夹中的文件中

Dev*_*vPy 6 python packaging exe pyinstaller python-3.x

我有我用 pyinstaller 创建的 exe 应用程序,并在创建工作正常的 exe 时捆绑了一个文件夹。为了访问我在创建 exe 时捆绑的文件夹中的任何文件,我可以从变量访问这些文件sys._MEIPASS,因为在中创建了临时目录Temp/_MEI96522

现在,当我对文件夹中的文件进行更改时,当我使用软件时,它会保留在那里,但现在当我关闭软件并再次打开软件时,我在上一个软件会话中所做的更改就消失了。该文件现在处于其原始形式,与之前将包含该文件的文件夹捆绑在 exe 中时一样。

我想要做的是对文件进行更改,并且需要保存更改,以便每次我在关闭后打开软件时这些更改都保留在那里。
有什么办法可以做到这一点,同时保持文件夹与 exe 捆绑在一起。

小智 0

我找到了解决这个问题的方法。为了使写入文件能够在 pyinstaller --onefile exe 中工作,它需要绝对路径。因此,我们确定正在运行的可执行文件的位置,以便我们可以获得 exe 的目录

import sys
import os

def get_executable_dir():
    if getattr(sys, 'frozen', False):  # Check if the script is running as a standalone executable
        return os.path.dirname(sys.executable)
    else:
        return os.path.dirname(os.path.abspath(__file__))

executable_dir = get_executable_dir()

with open(os.path.join(executable_dir, "config.txt"), "w") as f:
    f.write('config content')
Run Code Online (Sandbox Code Playgroud)

此代码将获取主 .exe 的绝对路径,它允许您将配置文件保存在同一目录中。