我有我的 exe 应用程序,它是用 pyinstaller 创建的,并在创建运行良好的 exe 时捆绑了一个文件夹。为了访问我在创建 exe 时捆绑的文件夹中的任何文件,我可以从变量
sys._MEIPASS
访问这些文件,因为在 Temp/_MEI96522
现在,当我对文件夹中的文件进行更改时,当我使用软件时,它会保留在那里,但现在当我关闭软件并再次打开软件时,我在之前的软件会话中所做的更改都消失了。该文件现在处于其原始形式,与之前将包含该文件的文件夹捆绑在 exe 中时一样。
我想要做的是对文件进行更改,并且需要保存更改,以便每次关闭后打开软件时这些更改都保留在那里。
有什么办法可以做到这一点,同时保持文件夹与 exe 捆绑在一起。
我找到了解决这个问题的方法。为了使写入文件能够在 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')
此代码将获取主 .exe 的绝对路径,它允许您将配置文件保存在同一目录中。