如何在Python文件中存储保存文件

问题描述 投票:0回答:1

我正在用 python 制作一个应用程序,然后使用 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()
。两者的结果都是
PermissionError: [Errno 13] Permission denied

python file-writing
1个回答
0
投票

这个答案假设 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)

'''

© www.soinside.com 2019 - 2024. All rights reserved.