我正在使用 PyInstaller 制作 exe 并使用 InstallForge 为其制作安装程序。在 InstallForge 之前,我可以使用
with open("Saves/default.sav", "w"): ...
写入文件。将应用程序安装到“Program Files (x86)”后,我需要管理员访问权限才能保存文件。有没有不需要管理员权限的保存文件的方法?
文件结构:
- Project Folder
|- main.py
|- Saves
| |- default.sav
|
|- Assets
|- ...
我的代码:
import pygame
from pygame.locals import *
pygame.init()
app = pygame.display.set_mode((640, 480), RESIZABLE)
def saveFile(contents):
with open("Saves/default.sav", "w") as f:
f.write(contents)
run = True
while run:
for ev in pygame.event.get():
if ev.type == QUIT:
saveFile("some_placeholder_data")
pygame.quit()
run = False
if not run:
break
这样程序关闭时所有数据都会被保存。我分别尝试了
with open("...", "w") as f: ...
和open()
和close()
。两者的结果都是:
权限错误:[Errno 13]权限被拒绝
这个答案假设 Windows 操作系统。 您正在尝试将文件写入安装可执行文件的目录。x86 不应该用于您的目的。尝试将文件路径更改为用户目录。我会: '''
#add this
#Path to file
path = 'C:/User_directory/Program_save_folder/default.sav'
#Save File function
def saveFile(contents,path=path):
with open(path, "w") as f:
f.write(contents)
#This provides you with a default path and the ability to take a different
#path as an input to the function
''' 但是,使用操作系统库你应该:
'''
#Path to file
path = 'C:/User_directory/Program_save_folder/default.sav'
#Save File function
def saveFile(contents,path=path):
directory = os.path.dirname(path)
if not os.path.exists(directory):
os.makedirs(directory)
with open(path, "w") as f:
f.write(contents)
'''